IP地址的隐藏(delphi实现 )[3]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 spt 的 blog

remote.sin_family := af_inet;
remote.sin_port := htons(itoport);
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;

本文关键:delphi;ip;ip隐藏
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top