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

C++ Winsock非阻塞/异步UDP套接字

  •  3
  • Ragnagard  · 技术社区  · 16 年前

    我在C++上开发了一个UDP套接字的小数据处理器,并且有一个线程(一个,除了插槽)来处理从它们接收到的信息。

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

    我怎么能这样做:

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

    对于C++中的多个客户端(多并发访问)?

    我在win32上使用winsocks atm,但是只需要让标准的阻塞udp套接字工作。没有图形用户界面,这是一个控制台应用程序。 我将非常感谢一个例子或一个指针;)。

    提前谢谢。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Nikolai Fetissov    16 年前

    udp套接字能够从多个客户端接收数据报 recvfrom() 功能。只需在接收时阻止,阅读请求,处理它,发送回复,重复。您甚至不需要线程,除非处理需要很长的时间(在这种情况下,连接两个队列的线程,in-和out-可以工作)。

        2
  •  0
  •   Preet Sangha    16 年前

    我建议最好通过将请求放入队列并让另一个线程脱离队列来解决这个问题。这将套接字接收与进程分离,从而允许您在需求更改时扩展到更多的侦听器和处理线程。

    推荐文章