在XP和Win7上接收UDP

时间:2012-07-31 19:17:46

标签: windows-7 udp broadcast

我使用的是用c ++构建的简单UDP接收器代码。我将我的机器升级到Windows 7,这条线现在因为UDP流未到达正在运行的可执行文件而被阻止:

  iResult = recv(sock, RxBuf, buffsize, 0);

recv功能刚刚举行。我使用过wire shark来确保UDP流是活动的和正确的,但不知道问题是什么。

任何帮助都将不胜感激。

(广播UDP流)

1 个答案:

答案 0 :(得分:1)

除非您将sock设置为非阻止,否则recv()将阻止,直到收到数据为止。因此,如果程序在那里阻塞,可能是因为它没有收到任何数据报。

在XP和7之间的Windows网络中,批次已更改,因此需要检查以下内容:

  • 检查您的bind()声明。确保您确实绑定了您认为自己的端口并且正在检查错误。

  • 在Windows中关闭防火墙并不能完全禁用它。有许多组件,特别是在Vista及更高版本上,它们一直处于活动状态。

  • 首次运行可执行文件时,Windows Vista及更高版本会要求您确认它应该具有网络访问权限。如果单击“允许”以外的任何内容,则该可执行文件的路径可能会被永久阻止。添加“允许”规则会覆盖此块。要解除阻止,必须重新打开防火墙,然后深入查看“高级安全Windows防火墙”,从传入和传出中删除违规规则。你可能会对在那里积聚的东西感到惊讶。

  • 您可能需要为正在侦听的UDP端口添加传入防火墙规则。即使防火墙已关闭。

  • 要尝试的其他事项:禁用任何防病毒软件,以管理员身份运行您的侦听器,获取Wireshark或其他数据包嗅探器,以确保数据包真正到达计算机。