关于原始套接字的问题!
WSAStartup(MAKEWORD(2,2), WSA);
s:=WSASocketA(AF_INET, SOCK_RAW, IPPROTO_RAW,0, 0, 0);
bOpt := 1;
setsockopt(s,IPPROTO_IP, IP_HDRINCL,@bOpt, SizeOf(bOpt));
sendto(s,sendbuffer,SizeOf(sendbuffer),0,server,sizeof(server));
先创建原始套接字,再设置了IP_HDRINCL选项,再用sendto 发数据包...
按道理说,sendto发送的数据应跟IP头里设置的源IP目标IP相符合,跟server结构里的设置应无关..
可是我在调试的时候,发现,这个server结构:
server.sin_family:=AF_INET;
server.sin_port:=htons(80);
server.sin_addr.S_addr:=inet_addr(pchar('1.1.1.1'));
对sendto发送是有影响的,有时会根本没有数据包出来.为什么?? 请高手指点一下!
我的环境是,100m网卡+ADSL拨号上网..