关于socket tcp 断线重连

技术小阿哥 2017-11-27

服务器 函数 windows 源码 主机 Socket

这个问题困扰过我几次,都没有来得及研究,今天研究一下。

  • 首先写一个最简易的socket tcp程序,连接成功后再关闭服务器然后再用客户端各种操作看是什么情况

测试表明

(1)客户端已经连接,当服务端关闭程序时,客户端调用send函数发送失败,WSAGetLastError() 返回10054(远程主机强迫关闭了一个现有的连接) 

(2)客户端已经连接,当客户端关闭程序时,服务端调用recv函数接收失败,WSAGetLastError() 返回10054(远程主机强迫关闭了一个现有的连接) ,这时对这个客户端的socket调用select函数时,会立即返回可读。

(3)客户端已经连接,当服务端关闭程序时,客户端调用recv函数接收失败,WSAGetLastError() 返回10054

(4)WSAAsyncSelect模式的服务端,当客户端软件关闭时,服务器收到的消息为FD_CLOSE,错误代码为10053(您的主机中的软件中止了一个已建立的连接)

  • 关于客户端断线重连

粗略的做法是,当客户端调用send或recv失败,然后WSAGetLastError()判断错误编号,然后关闭socket。再创建一个socket。然后进行connect操作。

 

下面附上我写的一个基于socket流式套接字的源码服务端支持一对多聊天。socket相关通信都是用windows api。用于新手学习之用。

 

 

 

 

源码下载

 

登录 后评论
下一篇
云攻略小攻
433人浏览
2019-10-21
相关推荐
TCP异常关闭研究分析
1117人浏览
2017-10-09 15:44:00
从零单排学Redis【铂金一】
686人浏览
2018-11-28 10:24:02
android设备休眠
1961人浏览
2014-08-07 17:57:00
ESFramework 4.0 有哪些优点?
470人浏览
2011-03-24 09:32:00
关于socket tcp 断线重连
586人浏览
2015-09-17 23:06:00
C# + Socket断线重连
763人浏览
2013-12-06 08:40:13
0
0
0
1369