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

4
我正在使用C++开发一个UDP套接字的小型数据处理器,并且有一个线程(除了套接字之外)来处理从套接字接收到的信息。
我的问题是当我需要同时从多个客户端在套接字中接收信息时。
我该如何做到像这样:
Socket foo;
/* init socket vars and attribs */
while (serving){
thread_processing(foo_info);
}

如何在C++中为多个客户端(同时访问)提供服务?

我目前正在使用win32上的winsocks,但只是让标准阻塞UDP套接字工作。这是一个控制台应用程序没有图形用户界面。

如果能提供示例或指针将不胜感激。

先行致谢。

2个回答

1

UDP套接字可以使用recvfrom()函数从多个客户端接收数据报。只需在接收上阻塞,读取请求,处理它,发送回复,重复即可。除非处理需要很长时间(在这种情况下,连接有两个队列的线程,一个是输入队列,一个是输出队列,会起作用),否则您甚至不需要线程。


0
我建议通过将请求放入队列中,让另一个线程从队列中处理来解决这个问题。这样可以将套接字的接收与进程解耦,从而使您能够根据需要扩展到更多的侦听器和处理线程。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接