c - 多线程单服务器多客户端应用程序中的阻塞套接字与非阻塞套接字

标签 c windows sockets winapi network-programming

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

最佳答案

I was thinking to make these sockets non-blocking but now I think using blocking socket inside each thread is a better idea. Blocking Socket continuously waits to receive data and whenever there is a need to send anything, sendto() is called. Is using blocking Socket in such a situation a good approach or should I use non-blocking sockets?

我同意。除非您期望有数十万个连接,否则我认为没有理由超越线程和阻塞 I/O。 select() 及其 friend 是在阻塞 I/O 的替代方案是另一个进程而不是另一个线程的时代设计的。

关于c - 多线程单服务器多客户端应用程序中的阻塞套接字与非阻塞套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16515751/

相关文章:

c - 限制进程对管道的访问 (Windows)

c++ - 获取控制台句柄

c++ - remquo 结果没有意义

windows - 如何从 Windows 命令提示符检测 NTFS 压缩?

java - 当 Java 作为客户端和 Android 作为服务器时,ServerSocket 不工作

java - 我应该在 Android 中使用 AsyncTask 来管理套接字连接吗?

java - 通过 Socket 将字符串从 Java (PC) 发送到 C (Raspberry Pi)

c - 海合会表现

c - 如何从 Hotspot Shield 捕获数据包

node.js - 在没有 npm 的情况下安装 NodeJS 包