TCP断线重连
struct sockaddr_in TempSadd;
TempSadd.sin_family = AF_INET;
TempSadd.sin_port = htons(m_ServerPort);
TempSadd.sin_addr.s_addr = inet_addr(m_ServerIp.c_str());
if (- == ::connect(m_Socket, (sockaddr*)& TempSadd, sizeof(TempSadd)))
{
MiniConsole::getInstance().Output("重新连接服务器 Failed connect(),Error=<%d>\n", WSAGetLastError());
MiLOG::Instance()->OutputError("重新连接服务器Failed connect(),Error=<%d>\n", WSAGetLastError());
MiniConsole::getInstance().Output("ServerIp:%s port:%d \n", m_ServerIp.c_str(), m_ServerPort);
closesocket(m_Socket);
m_bConnectState = false;
}
else //*********连接成功,可以开始发送、接收************
{
m_bConnectState = true;
MiniConsole::getInstance().Output("③连接成功服务器IP地址:<%s>,端口号<%d>\n", inet_ntoa(Sadd.sin_addr), ntohs(Sadd.sin_port));
MiLOG::Instance()->OutputSuccess("③连接成功服务器IP地址:<%s>,端口号<%d>\n", inet_ntoa(Sadd.sin_addr), ntohs(Sadd.sin_port));
}
这里有个坑
int connect(int sockfd, const struct sockaddr *servaddr, socklen_t addrlen); ret-成功返回0 失败返回-
connect函数是把当前套接字从CLOSED状态转移到SYN_SENT状态,若成功则再转移到ESTABLISHED状态。
若connect失败则该套接字不再可用,必须关闭,我们不能对这样的套接字再次调用connect函数。
当循环调用connect为给定主机尝试各个ip地址直到有一个成功时,在每次connect之后,都必须close当前套接字,并重新调用socket;
TCP断线重连的更多相关文章
- 关于socket tcp 断线重连
这个问题困扰过我几次,都没有来得及研究,今天研究一下. 首先写一个最简易的socket tcp程序,连接成功后再关闭服务器然后再用客户端各种操作看是什么情况 测试表明 (1)客户端已经连接,当服务端关 ...
- 发现电脑上装着liteide,就用golang做一个TCP通讯测试(支持先启动client端和断线重连)
1.参考https://www.cnblogs.com/yin5th/p/9274495.html server端 main.go package main import ( "fmt&qu ...
- 基于TCP通信的客户端断线重连
转载:http://www.cnblogs.com/networkcomms/p/4304362.html 源码下载 在CS程序中,断线重连应该是一个常见的功能. 此处的断线重连主要指的是服务器端因为 ...
- netty4 断线重连
转载:http://www.tuicool.com/articles/B7RzMbY 一 实现心跳检测 原理:当服务端每隔一段时间就会向客户端发送心跳包,客户端收到心跳包后同样也会回一个心跳包给服务端 ...
- ActiveMQ的断线重连机制
断线重连机制是ActiveMQ的高可用性具体体现之一.ActiveMQ提供failover机制去实现断线重连的高可用性,可以使得连接断开之后,不断的重试连接到一个或多个brokerURL. 默认情况下 ...
- Netty断线重连
Netty断线重连 最近使用Netty开发一个中转服务,需要一直保持与Server端的连接,网络中断后需要可以自动重连,查询官网资料,实现方案很简单,核心思想是在channelUnregistered ...
- 浅谈IM软件client的断线重连、心跳和长在线
版权声明:原创文章,未经博主同意禁止转载.欢迎点击头像上方"郭晓东的专栏"查看专栏 https://blog.csdn.net/hherima/article/details/27 ...
- socket 断线重连
send发送数据时,发送失败,进行如下重连处理: ) < )//serbuf中有数据可以发送才会执行这条语句 { printf("serial to tcp send msg erro ...
- android 实现mqtt消息推送,以及不停断线重连的问题解决
前段时间项目用到mqtt的消息推送,整理一下代码,代码的原型是网上找的,具体哪个地址已经忘记了. 代码的实现是新建了一个MyMqttService,全部功能都在里面实现,包括连服务器,断线重连,订阅消 ...
随机推荐
- BZOJ2808 : 那些年我们画格子
若$\min(n,m)=1$,那么设$f[i][j][k]$表示考虑前$i$个格子,改变了$j$次颜色,$i$的颜色为$k$的方案数,直接转移即可. 否则$\min(n,m)\geq 2$,那么有解当 ...
- vim技巧3
yyp复制当前行到下一行ddp剪切当前行到下一行cw:删除当前单词并进入插入模式xp:交换当前字符和右边字符s:删除光标所在的字符并进入插入模式I:在行首开始输入文字并进入插入模式A:在行尾开始输入文 ...
- day05函数和模块
一. (.format)的两种方法: 二.format_map方法 三.global函数内定义值,修改函数外定义的值 四.字典和list是可变变量,可以直接修改 五.可变参数(*args).参数不是 ...
- 记事本编辑的Java文件生成文档
用记事本写的Java源文件生成注释文 1)在命令行(事先调到相关的位置)中输入 -------javadoc -d doc Hello.java--------- 在这里Hello.java是Java ...
- fixed和sticky
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>f ...
- JAVA自学笔记18
JAVA自学笔记18 1.Map接口: 1)功能: 2) Map<String,String>m=new HashMap<String,String>(); //添加元素,元素 ...
- Mac/Ubuntu下的数据建模工具PDMan,替代PowerDesigner
PowerDesigner我使用过用Wine在Linux和Mac下用,但总有些缺陷,用Navicat却发觉没有Linux版本的: 一般关心的问题主要有如下: 1.数据库的关系设计图. 2.导出数据库脚 ...
- SpringBoot无废话入门02:SpringBoot启动分析
1.核心注解 在上文中,我们讲到了@SpringBootApplication是SpringBoot的核心注解. 可以很方便的在idea中下载源码来查看该注解的源码,如下: 可以看到,该注解本身又被其 ...
- Docker 集群Swarm创建和Swarm Web管理
关于Docker Swarm更多的介绍请查看<Docker管理工具-Swarm部署记录> 一.环境配置 1.安装环境 # cat /etc/redhat-release CentOS Li ...
- 访问天地图WMTS服务的正确姿势
天地图2018版对天地图应用开发流程进行了升级改造,主要有两点变化: (1)接口升级为tianditu.gov.cn政府域名,支持HTTP/HTTPS协议,原有服务域名tianditu.com继续保留 ...