Socket的ReceiveFrom() 函数收不到UDP包,急!!

fafa37 2008-05-01 01:24:59
我是CSDN的新用户。不知道会不会有人帮我解决。
描述:
socket绑定本地10.1.251.10:1050, 通过ReceiveFrom()函数接收任何地址发送过来的UDP包。
奇怪的是,我用局域网内另台机子10.1.251.13(以下称13)发送到UDP可以收到,而另外一个叫Zone Controller(应该是个网关吧)(10.1.231.1,以下称1)的发送的UDP包怎么也收不到。
我用sniff工具抓了包,13和1的包都能抓到,但为什么Socket的receivefrom()只能抓到13的包呢。
我用sniff查看了包的结构,发现10.1.251.13和10.1.231.1发送的包的差别是,在IP层的包头,1包括了路由选项,而13没有,也就是在IP头的部分,1比13多了12个字节。
难道要先对socket做 setsocketoption的操作才能收到1的包吗,具体应该怎么做,求教大家
...全文
322 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fafa37 2008-05-05
  • 打赏
  • 举报
回复
这个问题困扰了我一个星期。
现在把答案发出来,供大家参考。
我查了资料,说这样的UDP包,IP层的IPOptions里有松散源路由的选项,系统的防火墙会把它当作黑客病毒,过滤掉的。
这样我在把自己机器的防火墙BlackIce关了,后来就能收到了。
最先也考虑到防火墙的问题。但是没找到机器上装的防火墙。
后来在windows服务里看到BlackIce开着服务,把它关了试试,真的就行了,哈哈。
BUbuWander 2008-05-04
  • 打赏
  • 举报
回复
最土的办法 再换台机子试试
fafa37 2008-05-04
  • 打赏
  • 举报
回复
我没有控制网关。我只管收的。
协议栈的区别我上面已经说了,网关过来的比局域网内的包多了IPOptions的数据。
hurryboylqs 2008-05-03
  • 打赏
  • 举报
回复
你怎么控制网关发数据的?协议一样的么?

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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