【发布时间】:2012-09-03 18:56:49
【问题描述】:
我在我的 udp 服务器中使用相同的套接字,以便在某个端口上从客户端接收数据,然后在处理请求后使用 ip::ud::socket ::async_send_to 响应客户端
接收也是与 async_receive_from 异步完成的。套接字使用相同的 ioService(毕竟它是相同的套接字) 文档没有明确说明是否可以让同一个 udp 套接字从客户端 A(以异步方式)接收数据报,并可能同时向客户端 B 发送另一个数据报(异步发送) 我怀疑这可能会导致问题。我最终使用同一个套接字进行回复,因为在回复另一个客户端时,我无法将另一个套接字绑定到同一个服务器端口。
如何将另一个套接字绑定到同一个服务器端口?
编辑。我尝试将第二个 udp 套接字绑定到同一个 UDP 端口:
socket(ioService, boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), port))
当我第一次这样做时(为服务器“接收”套接字绑定)没关系,但第二次尝试创建另一个套接字时它会在绑定时报告错误(asio 抛出异常)
【问题讨论】:
-
请说明您的实际问题。您的设置是否正常工作,并且您正在寻找设计是否正常的确认?还是它不起作用,如果不是,您观察到什么错误?或者您是在问如何将另一个套接字绑定到服务器端口?
-
@mtrw 是否可以将另一个套接字绑定到同一个服务器端口?这样我会使用不同的套接字来发送重播。发生的情况是,我认为我的设置会导致服务器故障。
-
请编辑您的问题以澄清而不是添加 cmets
-
我想这里的关键问题是试图用同一个端口绑定多个套接字,这根本不可能而且毫无意义。
-
@E_net4 确实可以通过
SO_REUSEADDR使用UDP:但是我同意这是没有意义的。 OP:套接字一直是全双工的:您可以同时读取和写入它们。
标签: c++ networking boost boost-asio