socket 设备自动重启/断电 recv send阻塞的解决办法
来源:互联网 发布:c语言调用lib 编辑:程序博客网 时间:2024/06/03 21:01
http://blog.csdn.net/smilestone_322/article/details/7861527
版权声明:本文为博主原创文章,未经博主允许不得转载。
socket 设备自动重启/断电 recv send阻塞的解决办法
(1)使用socket的KeepAlive机制,当突然断电后,recv函数阻塞超时退出,不会造成程序死锁,或者程序一直阻塞在recv函数的问题,方法如下:
//
BOOL bKeepAlive = TRUE;
nRet=setsockopt(listen_sock, SOL_SOCKET, SO_KEEPALIVE, (char *)&bKeepAlive, sizeof(bKeepAlive));
if (nRet==SOCKET_ERROR)
{
printf("setsockopt failed : %d\n", WSAGetLastError());
return FALSE;
}
struct tcp_keepalive alive_in;
struct tcp_keepalive alive_out;
alive_in.keepalivetime = 5000;
alive_in.keepaliveinterval = 2000;
alive_in.onoff = TRUE;
unsigned long ulBytesReturn = 0;
nRet=WSAIoctl(listen_sock, SIO_KEEPALIVE_VALS, &alive_in, sizeof(alive_in), &alive_out, sizeof(alive_out),
&ulBytesReturn, NULL, NULL);
if (nRet == SOCKET_ERROR)
{
printf("setsockopt failed : %d\n", WSAGetLastError());
return FALSE;
}
//
同时判断设备是否掉线的方法有2个,一个为心跳包,一个还是KeepAlive 机制
- socket 设备自动重启/断电 recv send阻塞的解决办法
- socket 设备自动重启/断电 recv send阻塞的解决办法
- 非阻塞式的socket send recv
- socket、 send、recv、阻塞相关
- 关于SOCKET的阻塞非阻塞recv和send
- 关于SOCKET的阻塞非阻塞recv和send
- [转]socket的send、recv阻塞设置阻塞超时时间
- socket的send、recv阻塞设置阻塞超时时间
- socket的send、recv阻塞设置阻塞超时时间
- socket的send、recv阻塞设置阻塞超时时间
- socket的send、recv阻塞设置阻塞超时时间
- socket中send和recv函数的阻塞理解
- socket中send和recv函数的阻塞理解
- SOCKET的send recv流程
- 关于socket阻塞与非阻塞情况下的recv、send、read、write返回值
- 关于socket阻塞与非阻塞情况下的recv、send、read、write返回值
- 关于socket阻塞与非阻塞情况下的recv、send、read、write返回值
- 关于socket阻塞与非阻塞情况下的recv、send、read、write返回值
- 微信小程序开发(3)--倒计时60获取验证码
- linux-011上文件系统中超级块和inode的使用分析
- 大数据:网络爬虫的post请求、get请求的区别
- 【代码重构 & JDT】判断一个方法是否是实现重写,继承重写和递归
- Git-Gui的中文乱码解决方法
- socket 设备自动重启/断电 recv send阻塞的解决办法
- 前端获取到后端数据后,要根据数据类型传输不同的属性值到后端,后端完成特殊业务处理
- Weex新建项目报错weex-vue-render/index.js
- java 给线程池改名字的作用
- android项目的JaCoCo代码覆盖率入门使用
- py-faster-rcnn_cuda8.0_cudnn5.0_报错
- cvNamedWindow与namedWindow,cvShowImage与inshow的区别
- LeetCode
- tcpdf导入官方示例报错解决方案