📄 udpclientmain.pas
字号:
{***************************************************************
*
* Project : UDPClient
* Unit Name: UDPClientMain
* Purpose : UDP demo - client project
* Version : 1.0
* Date : Wed 25 Apr 2001 - 01:44:24
* Author : <unknown>
* History :
* Tested : Wed 25 Apr 2001 // Allen O'Neill <allen_oneill@hotmail.com>
*
****************************************************************}
unit UDPClientMain;
interface
uses
windows, messages, graphics, controls, forms, dialogs, stdctrls,
SysUtils, Classes, ExtCtrls, ScktComp,typeinc, Buttons;
type
TUDPMainForm = class(TForm)
UDPMemo: TMemo;
SendButton: TButton;
Edit1: TEdit;
GroupBox1: TGroupBox;
LabeledEdit1: TLabeledEdit;
LabeledEdit2: TLabeledEdit;
LabeledEdit9: TLabeledEdit;
LabeledEdit10: TLabeledEdit;
GroupBox2: TGroupBox;
LabeledEdit6: TLabeledEdit;
LabeledEdit4: TLabeledEdit;
LabeledEdit7: TLabeledEdit;
LabeledEdit8: TLabeledEdit;
LabeledEdit3: TLabeledEdit;
LabeledEdit5: TLabeledEdit;
CClient: TClientSocket;
SpeedButton1: TSpeedButton;
CServer: TServerSocket;
procedure FormCreate(Sender: TObject);
procedure CClientError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure CClientRead(Sender: TObject; Socket: TCustomWinSocket);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure SendButtonClick(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
UDPMainForm: TUDPMainForm;
implementation
const
HOSTNAMELENGTH = 80;
RECIEVETIMEOUT = 5000; // milliseconds
{$IFDEF MSWINDOWS}{$R *.dfm}{$ELSE}{$R *.xfm}{$ENDIF}
procedure TUDPMainForm.FormCreate(Sender: TObject);
begin
self.Top:=(screen.Height-self.Height) div 2;
self.Left:=(screen.Width-self.Width) div 2;
try
//初始化连接
UDPMemo.Lines.Add('测试服务器已经启动');
LabeledEdit9.Text := CClient.Host;
LabeledEdit1.Text:= CClient.Address;
LabeledEdit2.Text := IntToStr(CClient.Port);
CClient.Active:=True;
except
UDPMemo.Lines.Add('无法连接服务器');
end;
end;
procedure TUDPMainForm.CClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
UDPMemo.Lines.Add('无法连接服务器');
end;
procedure TUDPMainForm.CClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
re:pchar;
sbuf:string;
relong:integer;
begin
re:=nil;
while socket.ReceiveLength>0 do
begin
//申请内存
re:=AllocMem(socket.receivelength);
TRY
relong:=socket.ReceiveLength;
Socket.ReceiveBuf(re^,Socket.receivelength);
sBuf:=strpas(re);
Setlength(sbuf,relong);
FINALLY
freemem(re);
END;
UDPMemo.Lines.Add(sbuf);
end;
end;
procedure TUDPMainForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if CClient.Active then
CClient.Close;
end;
procedure TUDPMainForm.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
CClient.Socket.SendText(Edit1.Text);
edit1.SelectAll;
key:=#0;
end;
end;
procedure TUDPMainForm.SendButtonClick(Sender: TObject);
var
Bufmsg:TM_ServLogin;
relong:integer;
begin
Bufmsg.Msg:=GetSrvList;
Bufmsg.SendID:='00000001';
Bufmsg.ServID:='00000001';
Bufmsg.ServPass:='12345678';
//得到结构的大小
relong:=Sizeof(Bufmsg)+1;
CClient.Socket.SendBuf(Bufmsg,relong);
end;
procedure TUDPMainForm.SpeedButton1Click(Sender: TObject);
begin
try
//初始化连接
UDPMemo.Lines.Add('测试服务器已经启动');
LabeledEdit9.Text := LabeledEdit1.Text;
//LabeledEdit1.Text:= LabeledEdit2.Text;
LabeledEdit2.Text := IntToStr(CClient.Port);
CClient.Active:=True;
except
UDPMemo.Lines.Add('无法连接服务器');
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -