📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdUDPBase, IdUDPServer, UntUdpCtl,
IdSocketHandle, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
btn1: TButton;
Edit6: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
procedure OnCaseClentData(ISender: TudpCtl; IData: Pointer; ISize: Cardinal; IFromIP: string; IPort: integer);
public
ClientUdpCtl: TudpCtl;
Lmem: TMemoryStream;
procedure OnError(Sender: TObject; IData: PSafeUdpData; IErrorKind: SHeadLv);
end;
var
Form1: TForm1;
implementation
uses UntProctol, pmybasedebug;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
ClientUdpCtl := TudpCtl.Create(Self);
ClientUdpCtl.OnDataCase := OnCaseClentData;
ClientUdpCtl.RemoteHost := '127.0.0.1';
ClientUdpCtl.RemotePort := 1001;
ClientUdpCtl.ServerPort := 1002;
ClientUdpCtl.OnDataError := OnError;
Lmem := TMemoryStream.Create;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Lhead: Rhead;
LP: PChar;
begin
Lhead.Id := 1;
Lmem.Position := 0;
Lmem.WriteBuffer(lHead, Sizeof(Lhead));
LP := GetMemory(Memo1.GetTextLen + 1);
Lmem.SetSize(Memo1.GetTextLen + 1);
Memo1.GetTextBuf(LP, Memo1.GetTextLen + 1);
Lmem.WriteBuffer(lp^, Memo1.GetTextLen + 1);
FreeMemory(LP);
ClientUdpCtl.RemoteHost := Edit2.Text;
ClientUdpCtl.PeerSize := StrToInt(Edit5.Text);
ClientUdpCtl.ReSendTime := StrToInt(Edit3.Text);
ClientUdpCtl.FreeWindowsCount := StrToInt(Edit4.Text);
ClientUdpCtl.SleepTime := StrToInt(Edit6.Text);
ClientUdpCtl.SafeSendBuff(Lmem.Memory^, Lmem.Size);
Edit1.Text := IntToStr(Lmem.Size);
end;
procedure TForm1.OnCaseClentData(ISender: TudpCtl; IData: Pointer; ISize:
Cardinal; IFromIP: string; IPort: integer);
begin
with ISender do begin
case PInteger(IData)^ of //
1: begin
ShowMessage('Svr Resp Hello');
end;
end; // case
end;
end;
procedure TForm1.OnError(Sender: TObject; IData: PSafeUdpData;
IErrorKind: SHeadLv);
begin
Gob_Debug.AddLogShower('第%d-%d个包异常了 类型%d',
[Idata^.Head.PackedId, Idata^.Head.Part, ord(IErrorKind)]);
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
Gob_Debug.ShowDebugform;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Lmem.Free;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -