2 builds are used:
Tserversocket
Tclientsocket
------------------Tserversocket---------------------------
Open connection
Serversocket1.port: = 9000;
Serversocket1.active: = true;
Receives the message sent by the client. Corresponding event: Onclientread
Socket.receivetext
Sends a message to the client.
Serversocket1.socket.connections[0]. SendText (Edit1.text);
----------------------Tclientsocket---------------------------------------
Connecting to the service side
Clientsocket1.host: = ' 127.0.0.1 ';
Clientsocket1.port: = 9000;
Clientsocket1.active: = true;
Accepts messages sent by the server. Corresponding event: OnRead
str: = Socket.receivetext
Send a message to the server.
ClientSocket1.Socket.SendText (Edit1.text);
The following is the full code:
UnitClient;InterfaceusesWindows, Messages, sysutils, variants, Classes, Graphics, Controls, Forms, Dialogs, Scktcomp, Stdctrls, Extctrls, S Ockets;typetfrmclient=class(tform) Clientsocket1:tclientsocket; Memo1:tmemo; Panel1:tpanel; Label2:tlabel; Edit2:tedit; Button2:tbutton; Panel2:tpanel; Label1:tlabel; Button1:tbutton; Edit1:tedit; Label3:tlabel; Edit3:tedit; procedureButton2click (Sender:tobject); procedureButton1Click (Sender:tobject); procedureClientsocket1read (sender:tobject; Socket:tcustomwinsocket); Private {Private Declarations} Public {Public Declarations} End;varfrmclient:tfrmclient;Implementation{$R *.DFM}procedureTfrmclient.button2click (sender:tobject);begin if(clientsocket1.active = False) Then beginClientsocket1.host:=Edit3.text; Clientsocket1.port:=Strtoint (Edit2.text); Clientsocket1.active:=true; Self.caption:='connect the socket server successfully! '; End;End;procedureTfrmclient.clientsocket1read (sender:tobject; Socket:tcustomwinsocket);begin //Memo1.Lines.Add (' server says: ' + socket.receivetext); if(Memo1.Lines.Count > -) ThenMemo1.Lines.Clear; MEMO1.LINES.ADD ('Server:'+'ip='+ socket.remoteaddress +' '+Datetimetostr (now)); //Socket.remotehost +Memo1.Lines.Add (Socket.receivetext); MEMO1.LINES.ADD ("');End;procedureTfrmclient.button1click (sender:tobject);begin //ClientSocket1.Socket.SendText (edit1.text); withClientSocket1 Do begin ifEdit1.text <>"' Then beginMemo1.Lines.Add ('Client:'+' '+Datetimetostr (now)); Socket.sendtext (Edit1.text); MEMO1.LINES.ADD (Edit1.text); MEMO1.LINES.ADD ("'); End; End;End;End.
Unitserver;InterfaceusesWindows, Messages, sysutils, variants, Classes, Graphics, Controls, Forms, Dialogs, Stdctrls, Extctrls, scktcomp;
typeTfrmmain=class(tform) Serversocket1:tserversocket; Memo1:tmemo; Panel1:tpanel; Edit2:tedit; Label2:tlabel; Button2:tbutton; Panel2:tpanel; Button1:tbutton; Edit1:tedit; Label1:tlabel; Checkbox1:tcheckbox; procedureServersocket1clientconnect (sender:tobject; Socket:tcustomwinsocket); procedureServersocket1clienterror (sender:tobject; Socket:tcustomwinsocket; Errorevent:terrorevent; varErrorcode:integer); procedureServersocket1clientread (sender:tobject; Socket:tcustomwinsocket); procedureButton2click (Sender:tobject); procedureEdit2change (Sender:tobject); procedureformcreate (Sender:tobject); procedureButton1Click (Sender:tobject); Private {Private Declarations} Public {Public Declarations} End;varFrmmain:tfrmmain;Implementation{$R *.DFM}procedureTfrmmain.button1click (sender:tobject);begin withServerSocket1 Do begin ifEdit1.text <>"' Then beginMemo1.Lines.Add ('Server:'+' '+Datetimetostr (now)); socket.connections[0]. SendText (Edit1.text); //Socket.connections[0]. REMOTEADDRESS;//IPMemo1.Lines.Add (Edit1.text); MEMO1.LINES.ADD ("'); End; End;End;procedureTfrmmain.button2click (sender:tobject);begin ifEdit2.text <>"' Then begin TryServersocket1.port:=Strtoint (Edit2.text); Serversocket1.active:=true; Self.caption:='Socket server Standby, port:'+Edit2.text; Button2.enabled:=False; exceptself.caption:='The socket server is not ready.'; End; End;End;procedureTfrmmain.edit2change (sender:tobject);beginbutton2.enabled:=true;End;proceduretfrmmain.formcreate (sender:tobject);beginself.caption:='Socket Server';End;procedureTfrmmain.serversocket1clientconnect (sender:tobject; Socket:tcustomwinsocket);beginMemo1.Lines.Add ('-----Client:'+ socket.remoteaddress +'send a message to connect--');End;procedureTfrmmain.serversocket1clienterror (sender:tobject; Socket:tcustomwinsocket; Errorevent:terrorevent; varErrorcode:integer);beginErrorCode:=0;End;procedureTfrmmain.serversocket1clientread (sender:tobject; Socket:tcustomwinsocket);varstemp:string;begin Try if(Memo1.Lines.Count > -) ThenMemo1.Lines.Clear; MEMO1.LINES.ADD ('Client:'+'ip='+ socket.remoteaddress +' '+Datetimetostr (now)); //Socket.remotehost +Memo1.Lines.Add (Socket.receivetext); MEMO1.LINES.ADD ("'); if(checkbox1.checked = True) Then beginButton1.Click; //Socket.sendtext (edit1.text); End; exceptMemo1.Lines.Add (Datetimetostr (now)+': Program Exception'); End;End;End.
Delphi's Socket Communication