📄 main.pas
字号:
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, netthr, StdCtrls, communit, ExtCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Timer1: TTimer;
Button3: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure RecvMessage(var msg:Tmessage); message WM_Net_Recv;
procedure ThreadMessage(var msg:Tmessage); message WM_Net_Msg;
end;
var
Form1: TForm1;
i,j:integer;
ThreadId:THandle;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
TNetThread.Create(Handle);
ThreadId:=0;
i:=0;j:=0;
end;
procedure TForm1.RecvMessage(var msg:Tmessage);
var
PBuf:PByte;
pEtherHead:PEtherPacketHead;
begin
PBuf:=PByte(msg.wparam+14);
pEtherHead:=PEtherPacketHead(msg.wparam);
memo1.Lines.Add(inttohex(DWord(pEtherHead.DestEther.AddrByte[0]),2)+'.'+
inttohex(DWord(pEtherHead.DestEther.AddrByte[1]),2)+'.'+
inttohex(DWord(pEtherHead.DestEther.AddrByte[2]),2)+'.'+
inttohex(DWord(pEtherHead.DestEther.AddrByte[3]),2)+'.'+
inttohex(DWord(pEtherHead.DestEther.AddrByte[4]),2)+'.'+
inttohex(DWord(pEtherHead.DestEther.AddrByte[5]),2)+':'+inttostr(PBuf^));
i:=PBuf^;
if memo1.Lines.Count>1000 then memo1.Clear;
LocalFree(DWord(PBuf));
end;
procedure TForm1.ThreadMessage(var msg:Tmessage);
begin
case msg.WParam of
Msg_Create:
ThreadId:=msg.LParam;
Msg_Close:
ThreadId:=0;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.Clear;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
timer1.Enabled:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
pEtherHead:PEtherPacketHead;
Buffer:array [0..MAX_PACKET_SIZE] of byte;
pdata:PByte;
begin
if ThreadId=0 then exit;
fillchar(Buffer,0,BUFFER_SIZE);
pEtherHead:=PEtherPacketHead(@Buffer);
pdata:=PByte(DWord(pEtherHead)+ETHER_HEAD_LEN);
//* Set ether head */
pEtherHead.SourEther.AddrByte[0]:=$aa;
pEtherHead.SourEther.AddrByte[1]:=$0;
pEtherHead.SourEther.AddrByte[2]:=$4;
pEtherHead.SourEther.AddrByte[3]:=$0;
pEtherHead.SourEther.AddrByte[4]:=$8;
pEtherHead.SourEther.AddrByte[5]:=$4;
pEtherHead.DestEther.AddrByte[0]:=$ab;
pEtherHead.DestEther.AddrByte[1]:=$0;
pEtherHead.DestEther.AddrByte[2]:=$0;
pEtherHead.DestEther.AddrByte[3]:=$6;
pEtherHead.DestEther.AddrByte[4]:=$0;
pEtherHead.DestEther.AddrByte[5]:=$0;
pEtherHead.ServType:=$5060;
//* Set data */
pdata^:=j;
inc(j);
postthreadmessage(ThreadId,TM_Send,integer(pEtherHead),20);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
timer1.Enabled:=false;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -