让系统调用' select() '阻塞,直到套接字获得要读取的内容
let the system call `select()` block until a socket gets something to read
在select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
struct timeval *timeout)
的手册页中,它说:
If timeout is a null pointer, the select blocks indefinitely.
无限表示任意长度的周期吗?
是好让线程阻塞在select()
,直到套接字得到一些数据?如果是,*超时应该是多少?
"无限期"不是任意的,它是永远的。如果timeout
指针是NULL
,那么select
将永远阻塞,或者直到其中一个集合中的一个文件描述符"就绪"。
不,等待"永远"不是一个好主意…如果拔掉网线,应用程序就会冻结。您应该设置一个合理的超时(可能是几秒钟),以便在数据从未到达的情况下可以安全退出。
相关文章:
- 套接字读取后,我在缓冲区中看到意外输入
- 将"uint8_t"(从套接字读取)隐式转换为"char"安全吗
- TCP 服务器的异步读取使用 boost::asio 打印客户端套接字发送的数据
- 从Qt上的UNIX域套接字(QLocalSocket)读取
- 不要从输入队列套接字读取数据
- 如何读取套接字编程(c ++)中的所有数据?
- 使用 Broadcast 发出的从节点服务器发送的数据不能被 C++ 套接字 IO 客户端读取
- boost::asio-async_read_some示例代码没有读取套接字中的所有数据
- 使用RAW套接字读取ICMP响应
- 为什么我在蓝牙连接()上收到"java.io.IOException:读取失败,套接字可能关闭或超时,读取re
- UDP 套接字读取最后一个传入字节
- CAN套接字读取帧较晚
- Java 套接字读取在第二次读取时返回奇怪字符
- 如何使用 recv 或 C++ 中的读取功能从 tcp 套接字读取大请求
- 如何在读取时获取套接字流的位置
- 无法在java(客户端)的套接字上正确写入数据(类),也无法在c ++(服务器)上读取数据(类)
- C/C++:写入和读取套接字
- 如何正确读取套接字消息(C++)
- 如何读取套接字消息
- 连续两次读取套接字,第二次读取不起作用