【发布时间】:2012-06-28 12:20:04
【问题描述】:
这可能更像是一个网络问题而不是 C++ 问题,但我有一个 iOS 应用程序通过 UDP 与联网 PC 通信。两者都使用我用 C 编写的一些 UDP 套接字类。这是我的症状:
- 当 PC 应用程序发送广播流量时,PC 本身的 Wireshark 会看到它,iOS 应用程序也是如此。同一网络上的第三台 PC 也通过 Wireshark 看到数据包。
- 当 iOS 应用程序发送广播流量时,运行该应用程序的 PC 不会甚至在 Wireshark 中看到数据包。但是,第三台 PC可以。
附加信息:
- 有问题的 PC 运行的是 Windows 7。
- 它有一个用于摄像头的以太网端口。
- 它有一个无线网卡,它既连接到网络,又使用一个名为 Connectify 的小应用程序来单独创建自己的无线网络。我正在尝试通过 Connectify 网络发送数据。但是,我尝试通过另一个非 Connectify 无线网络发送数据,但仍然失败(尽管网络上的第三台 PC 仍然可以看到流量)。 UPDATE 忽略最后一句话。这是错误的。如果我更改无线网络,它就可以工作。
我尝试过的:
- 我首先假设这是一个路由表问题,因此我为与该接口相关的任何条目添加了具有低度量值的持久路由。路由表在这里:
- 然后我认为这个 Connectify 程序发生了一些奇怪的事情,所以我尝试通过 10.1.11 网络进行广播(在撤消我的持久路由之后)。如上所述,这成功了。
有什么想法吗?我难住了。我想这可能是网卡的限制,但是为什么它可以看到自己的广播数据包出去呢?会不会是 iOS 输出的数据包大小对于 PC 网卡来说太大了?
【问题讨论】:
-
如果 PC2 看到来自 iOS 设备的 UDP 广播但没有看到 PC1,则问题似乎出在 PC2 上。显然,iOS 设备正在生成有效的 UDP 流量,因此这可能不是网络库问题)。 Connectify 似乎是最有可能的罪魁祸首。在这种情况下,重新标记您的问题或向 Connectify 开发人员寻求建议似乎是最明智的尝试。
-
只是一个想法......你的电脑上有防火墙吗? (有时与防病毒软件捆绑在一起)。防火墙往往对外部广播持怀疑态度。如果有,请尝试禁用它。
标签: c++ networking network-programming udp