代码之家  ›  专栏  ›  技术社区  ›  hookenz

在UDP中重用端口号

  •  1
  • hookenz  · 技术社区  · 14 年前

    在ASIO中,是否可以创建与另一个套接字具有相同源端口的另一个套接字?

    我的UDP服务器应用程序正在使用端口3000调用receive\ u。它传递数据包 关闭到将发送响应的工作线程(当前使用动态源端口)。

    另一个线程中的套接字是这样创建的:

    udp::socket sock2(io_service, udp::endpoint(udp::v4(), 0));
    

    并使用与原始数据包一起保存的发送方\端点响应原始请求。

    3 回复  |  直到 14 年前
        1
  •  1
  •   cmeerw    14 年前

    您应该能够使用sou REUSEADDR socket选项将多个套接字绑定到同一地址。但话说回来,您不想这样做,因为没有指定哪个套接字将在该端口上接收传入数据(您必须检查所有套接字以获取传入数据)

        2
  •  3
  •   knitti freethinker    14 年前

    编辑:只需稍加努力,您还可以创建一个套接字,而不必等到一个线程的全部数据都已发送完:让拥有该套接字的工作线程在队列上侦听数据块(理想情况下正好是您要发送的有效负载的大小),然后将任意有效负载块发送到此队列,从多个线程。

        3
  •  1
  •   Andriy Tylychko    14 年前

    将回复发送到同一个套接字(您在其中接收到客户端的请求),而不是创建新的套接字