|
remote.sin_addr.s_addr := dwToIP; end;
procedure TForm1.SendIt; Var sh : TSocket; bOpt : Integer; ret : Integer; Buf : TPacketBuffer; Remote : TSockAddr; Local : TSockAddr; iTotalSize : Word; wsdata : TWSAdata;
begin // Startup Winsock 2 ret := WSAStartup($0002, wsdata); if ret<>0 then begin memo1.lines.add(''''WSA Startup failed.''''); exit; end; with memo1.lines do begin add(''''WSA Startup:''''); add(''''Desc.: ''''+wsData.szDescription); add(''''Status: ''''+wsData.szSystemStatus); end;
try // Create socket sh := Socket(AF_INET, SOCK_RAW, IPPROTO_UDP); if (sh = INVALID_SOCKET) then begin memo1.lines.add(''''Socket() failed: ''''+IntToStr(WSAGetLastError)); exit; end; Memo1.lines.add(''''Socket Handle = ''''+IntToStr(sh));
// Option: Header Include bOpt := 1; ret := SetSockOpt(sh, IPPROTO_IP, IP_HDRINCL, @bOpt, SizeOf(bOpt)); if ret = SOCKET_ERROR then begin Memo1.lines.add(''''setsockopt(IP_HDRINCL) failed: ''''+IntToStr(WSAGetLastError)); exit; end;
// Build the packet BuildHeaders( SrcIP, SrcPort, DestIP, DestPort, ''''THIS IS A TEST PACKET'''', Buf, Remote, iTotalSize );
// Send the packet ret := SendTo(sh, buf, iTotalSize, 0, Remote, SizeOf(Remote)); if ret = SOCKET_ERROR then Memo1.Lines.Add(''''sendto() failed: ''''+IntToStr(WSAGetLastError)) else Memo1.Lines.Add(''''send ''''+IntToStr(ret)+'''' bytes.'''');
// Close socket CloseSocket(sh); finally // Close Winsock 2 WSACleanup; end; end;
procedure TForm1.Button1Click(Sender: TObject); begin SendIt; end;
end.
上一页 [1] [2] [Web开发]通过伪静态规则实现子目录绑定 [Web开发]利用QQWry.Dat实现IP 地址高效检索 [Web开发]巧妙运用PHP函数实现采集器的制作 [Web开发]用PHP实现Javascript的escape(),unescape()的方法 [网页制作]利用HTML meta refresh 实现页面刷新与跳转(重定向… [实用文档]基于WebGIS的杭州公交线路查询系统设计与实现毕业… [办公软件]如何在Powerpoint 中(实现)输入上标、下标 [办公软件]如何实现Office工具栏、菜单以及菜单命令重命名 [办公软件]PowerPoint XP技巧之实现字幕上下移动动画 [办公软件]利用录制旁白功能在PowerPoint实现各种声音格式的…
|