这是客户端的
implementation{$R *.dfm}procedure Tfrm_Client.btn_connectClick(Sender: TObject);
begin
if idtcpclnt1 = nil then exit;
if not idtcpclnt1.Connected then
begin
try
idtcpclnt1.Host := idpwtch1.LocalIP;
idtcpclnt1.Port := 1119;
idtcpclnt1.Connect;
except
ShowMessage('connection failed');
idtcpclnt1.Disconnect;
exit
end; end;
end;procedure Tfrm_Client.btn_sendClick(Sender: TObject);
var
S: string;
begin
S := edt1.Text;
idtcpclnt1.IOHandler.Write(S);
end;这是服务端的
implementation{$R *.dfm}procedure TFrm_Server.btn_OpenServerClick(Sender: TObject);
begin
idtcpsrvr1.Bindings.Add;
idtcpsrvr1.Bindings.Items[0].Port := 1119;
idtcpsrvr1.Bindings.Items[0].IP := idpwtch1.LocalIP;
idtcpsrvr1.Active := True;
end;procedure TFrm_Server.idtcpsrvr1Execute(AContext: TIdContext);
var
s: TStringList;
begin
S := TStringList.Create;
AContext.Connection.IOHandler.ReadStrings(s);
mmo1.Lines.Add(S.Text);
end;end.能连上 但是不显示啊 棒啊我搞搞啊
implementation{$R *.dfm}procedure Tfrm_Client.btn_connectClick(Sender: TObject);
begin
if idtcpclnt1 = nil then exit;
if not idtcpclnt1.Connected then
begin
try
idtcpclnt1.Host := idpwtch1.LocalIP;
idtcpclnt1.Port := 1119;
idtcpclnt1.Connect;
except
ShowMessage('connection failed');
idtcpclnt1.Disconnect;
exit
end; end;
end;procedure Tfrm_Client.btn_sendClick(Sender: TObject);
var
S: string;
begin
S := edt1.Text;
idtcpclnt1.IOHandler.Write(S);
end;这是服务端的
implementation{$R *.dfm}procedure TFrm_Server.btn_OpenServerClick(Sender: TObject);
begin
idtcpsrvr1.Bindings.Add;
idtcpsrvr1.Bindings.Items[0].Port := 1119;
idtcpsrvr1.Bindings.Items[0].IP := idpwtch1.LocalIP;
idtcpsrvr1.Active := True;
end;procedure TFrm_Server.idtcpsrvr1Execute(AContext: TIdContext);
var
s: TStringList;
begin
S := TStringList.Create;
AContext.Connection.IOHandler.ReadStrings(s);
mmo1.Lines.Add(S.Text);
end;end.能连上 但是不显示啊 棒啊我搞搞啊
接收时需要指定接收行数,这个行数需要加在数据前头传递。接收1行时: AContext.Connection.IOHandler.ReadStrings(S,1, IndyTextEncoding_UTF8);
收发也可以用WriteLn和ReadLn,不用考虑行数问题。另外,字符串列表需要释放,否则内存泄漏。
服务端可以连接多个客户端,相互之间通过服务器通信。Indy10demo\Chat 2.0里有多客户端的聊天实例。Indy9里也有Chat例子,稍微有区别,也可以参考。