检测断开的插座?

时间:2013-07-05 21:01:30

标签: ios sockets

我有连接到服务器的客户端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));
  • 如果没有数据,则read
  • 返回-1
  • 如果断开连接,则read
  • 返回0

但并非总是如此。有时连接会丢失,但会返回-1。

是否有类似eof的内容可供检测?

1 个答案:

答案 0 :(得分:0)

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

相关问题