📄 u_client.pas
字号:
unit U_Client;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, StdCtrls, IdBaseComponent, IdComponent, IdUDPBase,
IdUDPClient, ExtCtrls;
type
TForm1 = class(TForm)
ClientSocket: TClientSocket;
Button1: TButton;
MemReadMsg: TMemo;
IdUDPClient1: TIdUDPClient;
btnSend: TButton;
MemSendMsg: TMemo;
Label2: TLabel;
Label1: TLabel;
Panel1: TPanel;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
procedure btnSendClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Try
ClientSocket.Active := true;
Except
MessageBox(0,'连接失败,请查看服务端是否有启动!','',MB_OK + MB_ICONWARNING);
end;
end;
procedure TForm1.ClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
var
len:word;
buf:array of char;
msg:string;
begin
try
Socket.ReceiveBuf(len, 2);
if len < 1 then Exit;
setlength(buf, len);
Socket.ReceiveBuf(buf[0], len);
//msg:=copy(buf, 0, len);
setlength(msg, len);
Move(buf[0], msg[1], len);
MemReadMsg.Lines.Add(msg);
except
end;
end;
{procedure TForm1.Button2Click(Sender: TObject);
var
tmp:string;
begin
tmp :=Trim(Memo2.Text);
try
IdUDPClient1.Active := true;
IdUDPClient1.Send(tmp);
except
end;
end;}
procedure TForm1.btnSendClick(Sender: TObject);
Var
len : Word;
Msg : String;
buf : array of char;
begin //前两个字节存放消息体内容长度
Msg := Trim(MemSendMsg.Text);
Len := Length(Msg);
SetLength(buf,Len + 2);
Move(Len,buf[0],2);
Move(Msg[1],buf[2],Len);
ClientSocket.Socket.SendBuf(buf[0],Len + 2)
end;
{begin
ClientSocket.Socket.SendText(Trim(MemSendMsg.Text))
end;}
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -