type
rec=record
username,
msg:string;
{ thread }
end;
type
thread=class(tthread)
private
procedure handleinput;
public
procedure execute;override;
end;var
Form1: TForm1;implementation{$R *.dfm}
var
passthread:thread;
frm:tform1;
rec1,
rec2:rec;procedure TForm1.Button1Click(Sender: TObject);
begin
if tcpclient.Connected then
else
begin
tcpclient.Port:=strtoint(tbserport.text);
tcpclient.Host:=tbsername.Text;
tcpclient.Connect();
tcpserver.Active:=true;
end;
passthread:=thread.Create(true);
passthread.FreeOnTerminate:=true;
passthread.Resume;
end;procedure TForm1.tcpclientConnected(Sender: TObject);
begin
showmessage('connected');
end;{ thread }procedure thread.execute;
begin
// inherited;
frm.Memo1.Text:=frm.Memo1.Text +'welcome';
end;procedure thread.handleinput;
begin
showmessage('handle run');
passthread.Synchronize(handleinput);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
frm:=self;
end;
procedure TForm1.tcpserverExecute(AThread: TIdPeerThread);
begin
if not athread.Terminated and athread.Connection.Connected then
begin
athread.Connection.ReadBuffer(rec2,sizeof(rec1));
memo1.Lines.Add(rec2.username+':'+rec2.msg);
end;
end;procedure TForm1.btnsendClick(Sender: TObject);
begin
rec1.username:='pc1';
rec1.msg:=memo2.Text;
tcpclient.WriteBuffer(rec1,sizeof(rec1),true);end;
end.另外:
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
tbsername: TEdit;
tbserport: TEdit;
tbcliport: TEdit;
Memo1: TMemo;
Button1: TButton;
Memo2: TMemo;
btnsend: TButton;
tcpclient: TIdTCPClient;
tcpserver: TIdTCPServer;连接就可以,但是就不能发信息,不知错在那里啦
rec=record
username,
msg:string;
{ thread }
end;
type
thread=class(tthread)
private
procedure handleinput;
public
procedure execute;override;
end;var
Form1: TForm1;implementation{$R *.dfm}
var
passthread:thread;
frm:tform1;
rec1,
rec2:rec;procedure TForm1.Button1Click(Sender: TObject);
begin
if tcpclient.Connected then
else
begin
tcpclient.Port:=strtoint(tbserport.text);
tcpclient.Host:=tbsername.Text;
tcpclient.Connect();
tcpserver.Active:=true;
end;
passthread:=thread.Create(true);
passthread.FreeOnTerminate:=true;
passthread.Resume;
end;procedure TForm1.tcpclientConnected(Sender: TObject);
begin
showmessage('connected');
end;{ thread }procedure thread.execute;
begin
// inherited;
frm.Memo1.Text:=frm.Memo1.Text +'welcome';
end;procedure thread.handleinput;
begin
showmessage('handle run');
passthread.Synchronize(handleinput);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
frm:=self;
end;
procedure TForm1.tcpserverExecute(AThread: TIdPeerThread);
begin
if not athread.Terminated and athread.Connection.Connected then
begin
athread.Connection.ReadBuffer(rec2,sizeof(rec1));
memo1.Lines.Add(rec2.username+':'+rec2.msg);
end;
end;procedure TForm1.btnsendClick(Sender: TObject);
begin
rec1.username:='pc1';
rec1.msg:=memo2.Text;
tcpclient.WriteBuffer(rec1,sizeof(rec1),true);end;
end.另外:
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
tbsername: TEdit;
tbserport: TEdit;
tbcliport: TEdit;
Memo1: TMemo;
Button1: TButton;
Memo2: TMemo;
btnsend: TButton;
tcpclient: TIdTCPClient;
tcpserver: TIdTCPServer;连接就可以,但是就不能发信息,不知错在那里啦
解决方案 »
- 关于DBExpress连接SQLSERVER的问题
- TdxBarManager 在父窗体中的ToolBar中添加了按钮,为什么在子窗体中看不见?
- 能否在一台机器上实现三层结构的应用阿,怎么实现?帮忙解决!谢谢!新手!!
- 一个极其简单的问题
- 不知哪里能下《新编Windows API参考大全》这本书?
- 关于paramcount。
- Win95版的DriveListBox、DirListBox、FileListBox在哪儿?
- 请问如何遍历获得一个Grid某列某行的数值?
- 低价出让基于RealMagic的VOD开发包
- 时间上的小问题:P
- 如何判断日期的有效性?(急)
- ★★★★★还有4700分,无法捐出,散之(一)★★★★★
procedure TLocalTreeForm.IdTCPServer1TIdCommandHandler0Command(
ASender: TIdCommand);
var
i,parentID,Classify:Integer;
title:String;
begin
DBForm.ADOTable2.Open;
with DBForm.ADOTable2 do
begin
Refresh;
First;
ASender.Thread.Connection.WriteInteger(RecordCount);
for i:=0 to RecordCount-1 do
begin
// Id:=FieldByName('ID').AsInteger;
title:=FieldByName('title').AsString;
parentID:=FieldByName('parentID').AsInteger;
Classify:=FieldByName('Classify').AsInteger;
with ASender.Thread.Connection do
begin
WriteLn(title);
WriteInteger(parentID);
WriteInteger(Classify);
end;
next;
end; //end for
end;
DBForm.ADOTable2.Close;
end;