【发布时间】:2010-09-20 21:38:45
【问题描述】:
在 ASIO 中,是否可以创建另一个与另一个套接字具有相同源端口的套接字?
我的 UDP 服务器应用程序正在使用端口 3000 调用 receive_from。它传递了数据包 关闭到将发送响应的工作线程(当前使用动态源端口)。
另一个线程中的套接字是这样创建的:
udp::socket sock2(io_service, udp::endpoint(udp::v4(), 0));
并使用与原始数据包一起保存的 sender_endpoint 响应原始请求。
我希望能够使用与服务器侦听相同的源端口响应客户端。但我看不出如何做到这一点。如果我尝试使用该地址,则会出现异常。可以按照我的要求做吗?我想要这样做的原因是如果我使用动态端口,这意味着客户端需要在 Windows 中添加特殊的防火墙规则以允许读取回复数据包。我发现如果回复中的源端口相同,windows防火墙会允许它回传。
【问题讨论】: