這是客戶端的
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.
能連上 但是不顯示啊 棒啊我搞搞啊
uj5u.com熱心網友回復:
發送時: idtcpclnt1.IOHandler.Write(S, IndyTextEncoding_UTF8); //指定編碼防亂碼。接收時需要指定接收行數,這個行數需要加在資料前頭傳遞。接收1行時: AContext.Connection.IOHandler.ReadStrings(S,1, IndyTextEncoding_UTF8);
收發也可以用WriteLn和ReadLn,不用考慮行數問題。另外,字串串列需要釋放,否則記憶體泄漏。
uj5u.com熱心網友回復:
thank you 怎么給多個客戶端發送呢,我在做一個雙人對戰的五子棋
uj5u.com熱心網友回復:
服務端可以連接多個客戶端,相互之間通過服務器通信。Indy10demo\Chat 2.0里有多客戶端的聊天實體。Indy9里也有Chat例子,稍微有區別,也可以參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/59135.html
標籤:網絡通信/分布式開發
上一篇:如何將RGB的JPG圖片轉成CMYK的JPG,請指點下,謝謝。
下一篇:請教一個問題
