在多线程单服务器多客户端应用程序中阻塞套接字v / s非阻塞套接字

时间:2013-05-13 06:07:13

标签: c windows sockets winapi network-programming

我一直在研究服务器客户端应用程序,其中服务器将一次服务(sendto + receivefrom)'x'个客户端。为此,我在服务器端创建了'x'个线程,以便将每个线程专用于一个客户端。在每个线程内部都有一个特定的套接字,仅供其客户端使用。我想这些套接字是非阻塞的,但现在我认为在每个线程中使用阻塞套接字是一个更好的主意。 Blocking Socket持续等待接收数据,每当需要发送任何内容时,都会调用sendto()。在这种情况下使用阻塞套接字是一种好方法还是应该使用非阻塞套接字? 等待帮助!!!

1 个答案:

答案 0 :(得分:1)

  

我正在考虑使这些套接字不阻塞,但现在我认为在每个线程中使用阻塞套接字是一个更好的主意。 Blocking Socket持续等待接收数据,每当需要发送任何内容时,都会调用sendto()。在这种情况下使用阻塞Socket是一种好方法还是应该使用非阻塞套接字?

我同意。除非你期望成千上万的连接,否则我没有理由超越线程和阻止I / O. select()和朋友的设计是在阻止I / O的替代方案是另一个进程,而不是另一个线程的日子里。