如果这个问题与其他类似问题重复,我道歉。
我在少数几个负载很低的系统上设置小型服务器 - 客户端(一次不超过10-15个连接,这也会产生非常低的数据传输)。我想知道我是否应该使用阻塞或非阻塞套接字?
在服务器端,我使用select,当它返回时,我去阅读fds。现在如果我使用非阻塞套接字选择那么选择后的“recv”的优势是什么。是否存在这样的情况:select会告诉您有可读的内容但实际上没有什么可读的?
由于
答案 0 :(得分:3)
我想知道是否应该使用阻塞或非阻塞套接字?
对于这样的低负载,我会使用阻塞套接字并为每个套接字提供自己的专用线程来运行。也就是说,select()
适用于阻塞和非阻塞套接字,如果你不熟悉多线程编程。
是否存在这样的情况:select会告诉您有可读的内容但实际上没有什么可读的?
是。在正常断开连接时,select()
报告套接字是可读的,然后该套接字上的recv()
返回0.
答案 1 :(得分:0)
我同意@Remy。
但是,我建议你不要使用线程。至少不要开始。我建议这样做的原因是因为听起来你对这种类型的东西有点新,并且线程可能只会为你增加比你需要的更多麻烦,以便让基本的通信运行起来。