• 关于socket tcp 断线重连


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

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

    源码下载

  • 相关阅读:
    圆珠笔芯为什么那么细
    2017第45周二
    浅谈XXE攻击
    谈谈ssrf
    htop简介
    关闭火狐定期向“http://detectportal.firefox.com/”发包
    linux登录用户(终端)间的通信
    linux下ftp、telnet的安装和使用
    深入解析hostname
    supervisor启动sqlmapapi失败 sqlmapapi: ERROR (file is not executable)
  • 原文地址:https://www.cnblogs.com/zhangdongsheng/p/4817625.html
Copyright © 2020-2023  润新知