博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tcp异常断开的重连解决方法
阅读量:4557 次
发布时间:2019-06-08

本文共 1854 字,大约阅读时间需要 6 分钟。

1.select超时重连

http://bbs.chinaunix.net/thread-4162149-1-1.html

 

2.http://bbs.csdn.net/topics/350074818

  心跳包

  recv = -1

  WSAGetLastError //windows

 

3.http://blog.csdn.net/chenggong2dm/article/details/9158857

   tcp_keepalive

4.http://zhidao.baidu.com/link?url=VoakzKE5hAvQ1q4Q5YvXUIZIyIyr1hQLmfDKGL5O7yMUdWQczvHkTBE1934dMyLcdrdZHD0X0Y6fzyrLO1u1m0lDsNEIcTM2aRdDqhUGA_q

   百度知道:发送接收和kepalive

5.http://biancheng.dnbcw.info/linux/366100.html

6.http://blog.csdn.net/greatsong/article/details/4987242

7.http://www.cnblogs.com/lidabo/p/4093733.html

8.http://blog.csdn.net/wtewrw/article/details/6547380

   select 1,read 0 则断开

9.http://blog.csdn.net/god2469/article/details/8801356

   多种方法总结

10. http://www.cnblogs.com/live41/archive/2012/08/29/2661942.html

11.win32/linux下网络编程十点需要注意的地方(转) http://blog.sina.com.cn/s/blog_4b383bff010007ow.html

12.  http://blog.csdn.net/taolinke/article/details/6680986

 

一 使用select函数的返回值判断(适用于在一定时间段内肯定有数据交互的场合)

#include <sys/select.h> 

int select (int maxfd + 1,    fd_set *readset,    fd_set *writeset,    fd_set *exceptset,    const struct timeval * timeout);
       最大的文件描述符加1,  检查可读性,      检查可写性  检查 ,
       一个指向timeval结构的 ,用于决定select等待I/o的最长时间。如果为空将一直等待。
              结构的定义:struct timeval {
                             long tv_sec; // seconds
                          long tv_usec; // microseconds
                         }
返回值      >0:就绪描述字的正数目
                  -1:出错
                   0:超时
 
二.
 

1、recv和send函数提供了和read和write差不多的功能。但是他们提供了第四个参数来控制读写操作.

int recv(int sockfd,void *buf,int len,int flags)

int send(int sockfd,void *buf,int len,int flags)

    前面的三个参数和read,write相同,第四个参数能够是0或是以下的组合:

_______________________________________________________________

| MSG_DONTROUTE | 不查找路由表 |

| MSG_OOB | 接受或发送带外数据 |

| MSG_PEEK | 查看数据,并不从系统缓冲区移走数据 |

| MSG_WAITALL | 等待任何数据 |

|————————————————————–|

    如果flags为0,则和read,write一样的操作。

2.recv/send函数需要调用read/write函数.

3.在unix中,所有的设备都可以看成是一个文件,所以我们可以用read来读取socket数据。

转载于:https://www.cnblogs.com/cj2014/p/4593609.html

你可能感兴趣的文章
设计模式-代理模式
查看>>
编程艺术第十六~第二十章:全排列/跳台阶/奇偶调序,及一致性Hash算法
查看>>
Docker入门学习笔记
查看>>
发送消息提醒
查看>>
Apache Mina-1
查看>>
复健运动poj2431
查看>>
文件关联与关联文件
查看>>
tomcat path配置
查看>>
windows lwp 乱码问题
查看>>
android锁屏和finish()后activity生命周期的变化
查看>>
为公司制作CRM截图
查看>>
LeetCode145 Binary Tree Postorder Traversal Java题解(递归 迭代)
查看>>
UVa 10450 - World Cup Noise
查看>>
Android 调用QQ登录
查看>>
Educational #39C
查看>>
threejs学习笔记(7)
查看>>
NOIP2016
查看>>
docker使用笔记
查看>>
推荐一款在IntelliJ IDEA中使用微信/QQ的插件
查看>>
github简单操作
查看>>