【问题标题】:C++ Winsock non-blocking/async UDP socketC++ Winsock 非阻塞/异步 UDP 套接字
【发布时间】:2010-04-06 00:34:15
【问题描述】:

我正在通过 UDP 套接字用 c++ 开发一个小型数据处理器,并且有一个线程(只有一个,并且除了套接字之外)处理从它们接收到的信息。

当我需要同时从套接字中的多个客户端接收信息时,就会出现问题。

我该怎么做:

Socket foo;
/* init socket vars and attribs */
while (serving){
thread_processing(foo_info);
}

在 c++ 中用于多个客户端(许多并发访问)?

我在 win32 上使用 winsocks atm,但只是让标准阻塞 udp 套接字工作。没有gui,它是一个控制台应用程序。 我会非常感谢一个示例或指向一个示例;)。

提前致谢。

【问题讨论】:

    标签: sockets asynchronous udp


    【解决方案1】:

    UDP 套接字能够通过recvfrom() 函数接收来自多个客户端的数据报。只需阻止接收,读取请求,处理它,发送回复,重复。除非处理需要很长时间,否则您甚至不需要线程(在这种情况下,与两个队列(输入和输出)连接的线程可以工作)。

    【讨论】:

      【解决方案2】:

      我建议最好通过将请求放入队列并让其他线程在队列外工作来解决此问题。这将套接字接收与进程分离,因此如果您的需求发生变化,您可以扩展到更多的侦听器和处理线程。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-31
        • 1970-01-01
        • 1970-01-01
        • 2019-08-02
        • 1970-01-01
        • 2013-06-04
        • 2011-09-16
        • 1970-01-01
        相关资源
        最近更新 更多