0

我有连接到服务器的客户端 iOS 应用程序。它使用非阻塞套接字。

int fl;
fl=fcntl(s,F_GETFL,0);
fcntl(s,F_SETFL, fl | O_NONBLOCK);

int set = 1;
setsockopt(s, SOL_SOCKET, SO_NOSIGPIPE, (void *)&set, sizeof(int));
  • 如果没有数据,则返回 -1read
  • 如果断开连接,则返回 0read

但这并不总是正确的。有时连接丢失但返回-1。

有什么想eof检测的吗?

4

1 回答 1

0

0 是 EOF。如果有错误,read返回-1,你应该查看errno看看它是什么。在 TCP 中检测断开连接的唯一可靠方法是至少写入两次。

于 2013-07-05T22:28:33.310 回答