我将udp单播数据包从窗口发送到linux。
我已经编写了简单的应用程序udp客户端和srever使用boost。
我在windows上运行客户端(udp发送方),在linux上运行服务器(udp接收方)。
我的客户端正在发送udp数据包,但是linux上的udp接收器没有接收到这些数据包。但是我可以在wireshark上看到udp数据包(它运行在我的linux上)。
我测试了端口和ipaddress,它们都是正确的。
下面是运行在linux上的代码。
如果我同时在windows上运行(客户端和服务器),它可以正常工作。
using boost::asio::ip::udp;
class u
在我的C++应用程序中,我使用::bind()作为UDP套接字,但在极少数情况下,由于连接丢失而重新连接后,我会得到errno EADDRINUSE,即使在多次重试之后也是如此。UDP连接的另一端将接收重新连接的数据,并等待select()指示有要读取的内容。
我认为这意味着本地端口正在使用中。如果是真的,我如何泄漏本地端口,以便另一端能够正常连接到它?这里真正的问题是另一端连接得很好,正在等待,但这一端被EADDRINUSE卡住了。
-编辑--
下面的代码片段显示我已经在我的TCP套接字上执行了SO_REUSEADDR,而不是在我遇到问题的这个UDP套接字上:
// According to