关于linux中select对于网络关闭不返回的处理
来源:互联网 发布:网络教育本科学历证书 编辑:程序博客网 时间:2024/06/09 13:52
在mosquitto中有:
int sock;int sockpairR;int sockpairW;
int sv[2];if(socketpair(AF_UNIX, SOCK_STREAM, 0, sv) == -1){return MOSQ_ERR_ERRNO;}if(_mosquitto_socket_nonblock(sv[0])){COMPAT_CLOSE(sv[0]);COMPAT_CLOSE(sv[1]);return MOSQ_ERR_ERRNO;}if(_mosquitto_socket_nonblock(sv[1])){COMPAT_CLOSE(sv[0]);COMPAT_CLOSE(sv[1]);return MOSQ_ERR_ERRNO;}*pairR = sv[0];*pairW = sv[1];
其中: sockpairR=sv[0]; sockpairW=sv[1];
当需要发送数据时调用: write(mosq->sockpairW, &sockpair_data, 1)
这样在: select -> (sock, sockpairR) 时就会返回
FD_SET(mosq->sock, &readfds);FD_SET(mosq->sockpairR, &readfds);if(mosq->out_packet)FD_SET(mosq->sock, &writefds); pselect(maxfd+1, &readfds, &writefds, NULL, &local_timeout, NULL);if( FD_ISSET(mosq->sockpairR, &readfds) ){ read(sockpairR....); FD_SET(mosq->sock, &writefds);}if(FD_ISSET(mosq->sock, &writefds)){ write...>> sock}
其二:只能用超时时间判断了
阅读全文
0 0
- 关于linux中select对于网络关闭不返回的处理
- 关于用 apache cxf中对于不是返回200错误的处理 ,获取错误描述文本的方法
- ionic路由对于返回的处理
- android应用程序中对于ANR主线程超时不响应导致强制关闭的解决方案
- linux中select网络通信
- linux 对于文件的处理
- 8、关于增强版的GenericityJDBCUtils的实现,可灵活的处理select的返回结果
- 对于jsp,java中关于时间处理
- 对于dotnet中返回404后继续读取http的内容的处理
- 新开网络处理线程 不返回主线程处理UI刷新的报错
- 关于IBATIS中返回的hashmap存在不释放问题
- 关于对于C语言中主函数参数接返回值的理解
- linux网络编程中select/poll/epoll的比较分析
- Jackson中对于命名不规范的成员变量的处理
- linux上网络配置不生效的怪异现象处理
- linux上网络配置不生效的怪异现象处理
- 关于Fragment中返回键(onBackPressed)的处理
- android中关于activity的返回键处理方法
- kvm虚拟机的四种网络模式
- 取得管理员权限,删除系统文件夹
- jvisualvm插架安装
- linux命令之查看目录树结构-tree
- 第十三周LeetCode算法题
- 关于linux中select对于网络关闭不返回的处理
- CAS单点登录-单用户登录(十九)
- 闲言碎语001
- spring boot 集成 mybatis:如何优雅的使用mybatis
- 观察者设计模式 Vs 事件委托(java)
- 游戏开发中网络通讯协议对比
- 第一章 java概述
- 运算符 || && 优先级问题
- hyperledger blockchain-explorer 区块链浏览器项目搭建