Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我创建了一个服务器,用于select()检查套接字描述符中是否有数据,但显然 select 标记了一个套接字,即使在客户端断开连接后也可以从中读取,并且我得到了垃圾值。
select()
我发现这篇关于堆栈溢出的帖子:
select(设置了读取掩码)将返回带有信号的句柄,但是当您使用 ioctl* 检查待读取的字节数时,它将为零。`
我的问题是什么是 ioctl* 以及如何使用它?一个例子会很好。
如果read()对套接字(文件)描述符的调用返回0,则仅表示连接的另一端已关闭并关闭了连接。
read()
0
注意:当传递给的 '之一表示的连接已关闭select()时,等待套接字(文件)描述符集上可能的“事件”也将返回。fd_setselect()
fd_set
检查人们在使用时常犯的错误select(2):
select(2)
fd_max
errno(3)
而且,是的,read(2)当对方干净地关闭 TCP 连接时返回零,不再使用该套接字,就close(2)它。
read(2)
close(2)