博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于socket tcp 断线重连
阅读量:6497 次
发布时间:2019-06-24

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

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

  • 首先写一个最简易的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。用于新手学习之用。

 

 

 

 

 

出处:
作者:

转载地址:http://nqjyo.baihongyu.com/

你可能感兴趣的文章
自定义状态切换按钮
查看>>
Linux基础命令---diffstat
查看>>
WPF的消息机制(二)- WPF内部的5个窗口之隐藏消息窗口
查看>>
DevOps:怎么实现源代码注释和系统文档的自动化更新?
查看>>
hadoop HDFS常用文件操作命令
查看>>
Linux下用汇编输出Hello, world
查看>>
使用modernizr.js检测浏览器对html5以及css3的支持情况
查看>>
解决网络劫持
查看>>
Spring Boot轻松理解动态注入,删除bean
查看>>
vi(vim)快捷键小记
查看>>
在线设计网站,有了这几个网站,设计再也不用求人了
查看>>
OSS正式支持IPv6公测
查看>>
gdal 1.9+python 2.7开发环境配置
查看>>
Redis (二)_ jedis的使用
查看>>
拜托,面试别再问我时间复杂度了!!!
查看>>
javascript推荐书籍
查看>>
如何用Python做Web开发?——Django环境配置
查看>>
1138. Postorder Traversal (25)
查看>>
Xposed: 勾住(Hook) Android应用程序对象的方法,实现AOP
查看>>
琐碎的知识库
查看>>