在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
使用了2个组建: TServerSocket TClientSocket ------------------TServerSocket--------------------------- //开启连接 ServerSocket1.Port := 9000;
//接收客户端发送的消息。对应事件:OnClientRead Socket.ReceiveText
//发送消息给客户端。 ServerSocket1.Socket.Connections[0].SendText(Edit1.Text);
----------------------TClientSocket--------------------------------------- //连接服务端 ClientSocket1.Host := '127.0.0.1'; ClientSocket1.Active := true;
//接受服务端发送的消息 。对应事件:OnRead str := Socket.ReceiveText
//发送消息给服务端。 ClientSocket1.Socket.SendText(Edit1.Text);
下面为完整代码:
unit Client; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ScktComp, StdCtrls, ExtCtrls, Sockets; type TFrmClient = 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; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); private { Private declarations } public { Public declarations } end; var FrmClient: TFrmClient; implementation {$R *.dfm} procedure TFrmClient.Button2Click(Sender: TObject); begin if (ClientSocket1.Active = false) then begin ClientSocket1.Host := Edit3.Text; ClientSocket1.Port := strtoint(Edit2.Text); ClientSocket1.Active := true; Self.Caption := '连接socket服务器成功!'; end; end; procedure TFrmClient.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); begin // Memo1.Lines.Add('服务器说:' + Socket.ReceiveText); if (Memo1.Lines.Count > 50) then Memo1.Lines.Clear; Memo1.Lines.Add('服务器:' + ' Ip=' + Socket.RemoteAddress + ' ' + datetimetostr (now)); // Socket.RemoteHost + Memo1.Lines.Add(Socket.ReceiveText); Memo1.Lines.Add(''); end; procedure TFrmClient.Button1Click(Sender: TObject); begin // ClientSocket1.Socket.SendText(Edit1.Text); with ClientSocket1 do begin if Edit1.Text <> '' then begin Memo1.Lines.Add('客户端:' + ' ' + datetimetostr(now)); Socket.SendText(Edit1.Text); Memo1.Lines.Add(Edit1.Text); Memo1.Lines.Add(''); end; end; end; end. unit server; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ScktComp; type TFrmMain = class(TForm) ServerSocket1: TServerSocket; Memo1: TMemo; Panel1: TPanel; Edit2: TEdit; Label2: TLabel; Button2: TButton; Panel2: TPanel; Button1: TButton; Edit1: TEdit; Label1: TLabel; CheckBox1: TCheckBox; procedure ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocket1ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure Button2Click(Sender: TObject); procedure Edit2Change(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var FrmMain: TFrmMain; implementation {$R *.dfm} procedure TFrmMain.Button1Click(Sender: TObject); begin with ServerSocket1 do begin if Edit1.Text <> '' then begin Memo1.Lines.Add('服务器:' + ' ' + datetimetostr(now)); Socket.Connections[0].SendText(Edit1.Text); // Socket.Connections[0].RemoteAddress;//IP Memo1.Lines.Add(Edit1.Text); Memo1.Lines.Add(''); end; end; end; procedure TFrmMain.Button2Click(Sender: TObject); begin if Edit2.Text <> '' then begin try ServerSocket1.Port := strtoint(Edit2.Text); ServerSocket1.Active := true; Self.Caption := 'Socket服务器待命中,端口:' + Edit2.Text; Button2.Enabled := False; except Self.Caption := 'Socket服务器没有准备好'; end; end; end; procedure TFrmMain.Edit2Change(Sender: TObject); begin Button2.Enabled := true; end; procedure TFrmMain.FormCreate(Sender: TObject); begin Self.Caption := 'Socket服务器'; end; procedure TFrmMain.ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin Memo1.Lines.Add('-----客户端:' + Socket.RemoteAddress + ' 发消息来连接了--'); end; procedure TFrmMain.ServerSocket1ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin ErrorCode := 0; end; procedure TFrmMain.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var stemp: string; begin try if (Memo1.Lines.Count > 50) then Memo1.Lines.Clear; Memo1.Lines.Add('客户端:' + ' Ip=' + Socket.RemoteAddress + ' ' + datetimetostr(now)); // Socket.RemoteHost + Memo1.Lines.Add(Socket.ReceiveText); Memo1.Lines.Add(''); if (CheckBox1.Checked = true) then begin Button1.Click; // Socket.SendText(Edit1.Text); end; except Memo1.Lines.Add(datetimetostr(now) + ' :程序异常'); end; end; end. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论