Windows下Socket编程中UDP通讯使用INADDR_ANY参数是否有效?

迷路的指南针 2020-03-15 07:22:44
如题,公司windows PC端祖传代码关于组播那块都是bind好几个网卡,然后挨个发送组播报文。经过查询我发现有INADDR_ANY这个参数可以用,但是使用这个参数,bind正常,sendto也正常报文根本发不出去。要是挨个bind每个网卡的IP就可以。我怀疑我的代码有问题,从网上找过开源代码HP-SOCKET,里面也有关于组播代码的Demo,实测抓包,没有数据出来。有没有经验丰富的大神愿意讨教的?是不是INADDR_ANY只在Linux可用?本人Win10 64位电脑,使用vs2010。生成的exe程序使用管理员权限启动,使用抓包软件也无法捕获搜索报文。当然如果这个问题比较复杂我可追加分。
...全文
364 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
迷路的指南针 2020-03-18
  • 打赏
  • 举报
回复
引用 3 楼 走好每一步 的回复:
我记得bind INADDR_ANY, 会选择任意一个网卡出去,做服务器就不太合适 抓包软件也要选对网卡才能抓到包的
使用INADDR_ANY进行bind,在多网卡的Windows下好像也不能捕获报文。我组件局域网,一台服务器端,2台客户端,一台客户端(192.168.1.100)发送组播请求命令,另外一台客户端(它有2个网卡,一个192.168.1.125,一个169.254.94.13)只监听,监听的电脑bind INADDR_ANY时,如果有多个网卡,那么它将无法获取到组播报文,如果只有一个网卡的情况下时可以的。请问我有那里做的不对吗?
迷路的指南针 2020-03-18
  • 打赏
  • 举报
回复
使用INADDR_ANY进行bind,在多网卡的Windows下好像也不能捕获报文
迷路的指南针 2020-03-16
  • 打赏
  • 举报
回复
引用 3 楼 走好每一步 的回复:
我记得bind INADDR_ANY, 会选择任意一个网卡出去,做服务器就不太合适 抓包软件也要选对网卡才能抓到包的
谢谢大佬,确实是这样的。我因为装了虚拟机,所以有2个虚拟网卡。估计组播的报文往虚拟网卡里面扔了,所以对接的设备没有收到,抓包软件也没有收到。我把虚拟网卡禁用之后,果然正常了。
走好每一步 2020-03-16
  • 打赏
  • 举报
回复
我记得bind INADDR_ANY, 会选择任意一个网卡出去,做服务器就不太合适 抓包软件也要选对网卡才能抓到包的
迷路的指南针 2020-03-16
  • 打赏
  • 举报
回复
引用 1 楼 走好每一步 的回复:
bind INADDR_ANY 有效的,只是有时候bind特定地址会避免一些问题
是否可以理解为套接字使用bind INADDR_ANY 只能用来监听recvfrom 不能用sendto?
走好每一步 2020-03-16
  • 打赏
  • 举报
回复
bind INADDR_ANY 有效的,只是有时候bind特定地址会避免一些问题

18,363

社区成员

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

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