怎么判断 TCP链接 是否断开了呢
来源:互联网 发布:跑步软件排行 编辑:程序博客网 时间:2024/04/28 17:16
今天用select IO复用时,发现 没有数据交互的情况下,select也返回(还未超时)。 查书得知,当fd在失去链接时select总是返回。并且read结果为空。
那么怎么判断tcp链接是否断开呢。查质料如下:
* Seems like the most portable way of detecting connect()
* failure is to call getpeername(). If socket is connected,
* getpeername() will return 0. If the socket is not connected,
* it will return ENOTCONN, and read(fd, &ch, 1) will produce
* the right errno through error slippage. This is a combination
* of suggestions from Douglas C. Schmidt and Ken Keys.
*/
{
struct sockaddr_in addr;
int addrlen = sizeof(addr);
status = pj_sock_getpeername(h->fd, (struct sockaddr*)&addr,
&addrlen);
}
用getpeername 来判断是否断开链接:
当getpeername返回 0 是证明是链接状态
当返回值是ENOTCONN时没有链接。
当用select 时,如果链接断开时,一直会返回可读,这样有select 有可能进入死循环。所以在select中一定要判断链接是否断开。
- 怎么判断 TCP链接 是否断开了呢
- Tcp服务端判断客户端是否断开连接
- ASP 判断客户端是否断开链接的妙用
- 完成端口(IOCP)怎么判断某个连接是否断开
- socket怎么判断客户端与服务器是否断开
- Javaclient端怎么判断server端socket是否已经断开
- 判断TCP断开
- 判断客户端是否断开
- 用Java怎么判断链接是否有效
- 怎么判断jar包是否冲突了呢?即我怎么知道import的是不是我想要的class文件呢?
- iOS 怎么实现监听网络断开和链接上,其次是怎么判断网络的类型??????????
- 检测socket链接是否断开
- 检测socket链接是否断开
- tcp socket 网线断开判断
- tcp socket 网线断开判断
- tcp socket 网线断开判断
- TCP socket网线断开判断
- 如何判断Socket是否断开
- Spring Bean 高级装配
- Windows Socket I/O模型以及Linux Epoll模型的有关资料
- 识别不了移动硬盘的解决方法
- android XML下searchable.xml
- Linux下phpMyAdmin 的配置
- 怎么判断 TCP链接 是否断开了呢
- 判断当前环境是中文还是英文
- 2012目标
- 解决VMWare Workstation 响应慢
- Windows Mobile 6 SDK 中的 GPS 工具
- 刷机扫盲--底包、升级包、Bootloader、Recovery分别是什么?
- 解决vcard乱码&批量导入outlook
- Makefile中用宏定义进行条件编译
- The Programming Languages Beacon