关于原始套接字的问题!

yaowei_2002 2008-01-12 01:19:29
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拨号上网..
...全文
84 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
UltraBejing 2008-05-01
  • 打赏
  • 举报
回复
好像没那么简单,呵呵.
Bear_hx 2008-01-26
  • 打赏
  • 举报
回复
你的服务器地址有问题,你是不是没看相关的API文档就开始做了,建议看看《Windows 网络编程》,里面有具体讲API创建原始套接字的。
小风哥哥 2008-01-18
  • 打赏
  • 举报
回复
我是初学者,感觉仅仅指定了IP是不够的,也要告诉它你使用什么协议AF_INET(IP协议),什么端口:80(http的端口,这个一般想上网的人都不会拦的); 这样你的数据才能发出去,人家才知道在那个端口接受。乱说了一下,还是等高手来指教吧。
yaowei_2002 2008-01-12
  • 打赏
  • 举报
回复
请问高手在哪里啊?????
yaowei_2002 2008-01-12
  • 打赏
  • 举报
回复
请问高手在哪里啊???

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧