unit1.pas
来自「delphi下UDP协议穿透[打洞]源代码」· PAS 代码 · 共 79 行
PAS
79 行
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, UntUdpCtl;
type
TForm1 = class(TForm)
Memo2: TMemo;
Edit2: TEdit;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
procedure OnCaseSvrData(ISender: TudpCtl; IData: Pointer; ISize: Cardinal;
IFromIP: string; IPort: integer);
{ Private declarations }
public
SvrUDPCtl: TudpCtl;
procedure OnError(Sender: TObject; IData: PSafeUdpData; IErrorKind: SHeadLv);
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses pmybasedebug, UntProctol;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
SvrUDPCtl := TudpCtl.Create(Self);
SvrUDPCtl.OnDataCase := OnCaseSvrData;
SvrUDPCtl.RemoteHost := '127.0.0.1';
SvrUDPCtl.RemotePort := 1002;
SvrUDPCtl.ServerPort := 1001;
SvrUDPCtl.OnDataError := OnError;
end;
procedure TForm1.OnCaseSvrData(ISender: TudpCtl; IData: Pointer; ISize:
Cardinal; IFromIP: string; IPort: integer);
var
Lp, LTep: PChar;
begin
with ISender do begin
case PInteger(IData)^ of //
1: begin
LTep := IData;
Edit2.Text := IntToStr(ISize);
Lp := GetMemory(ISize);
inc(LTep, Sizeof(rhead));
CopyMemory(Lp, LTep, ISize);
Memo2.Text := StrPas(Lp);
FreeMemory(Lp);
end;
end; // case
end; // with
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.Button1Click(Sender: TObject);
begin
Gob_Debug.ShowDebugform;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?