问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

android socket怎样实现断网重连

发布网友 发布时间:2022-04-30 05:11

我来回答

1个回答

热心网友 时间:2023-10-15 13:11

由于当网络出现故障时,recv要很长时间才能返回,如果你觉得这种方式不能接受,可以考虑select或者其他模型。

UINT CMonitorDlg::ThreadFunction(LPVOID pParam)
{

WSADATA wsaData;
WSAStartup(...);

while(1)
{

if (WaitSingleObject(hEventKill, 0) == WAIT_OBJECT_0) //
这个hEventKill到主线程里创建,用于控制线程退出
{
break;
}

SOCKET s; //创建套接字

int port=PORT;

int iLen; //从服务器接收的数据长度
TCHAR recvbuf[BufferLen]; //接受数据的缓冲器

struct sockaddr_in serv1; //服务器端地址

serv1.sin_family=AF_INET;
//需要连接的服务器地址信息
serv1.sin_port=htons(port); //需要连接的服务器地址信息

serv1.sin_addr.s_addr=inet_addr(p->Ip); //将命令行的IP地址转化为二进制表示的网络字节顺序IP地址

s=socket(AF_INET,SOCK_STREAM,0);

if(s==INVALID_SOCKET)
{

AfxMessageBox("socket()failed");//套接字失败
return 0;
}

if(connect(s,(struct
sockaddr*)&serv1,sizeof(serv1))==INVALID_SOCKET)
{
int
b=WSAGetLastError();
//连接失败
}
else
{ //连接成功

p->connectstate=true;

do{

在此循环体中我接收数据并对数据做处理(省略部分代码)

iLen=recv(s,recvbuf,sizeof(recvbuf),0); //接收套接字中的数据放入recvbuf1缓冲区

if(iLen==0) // server调用了close
{

strtempMsg.Format(_T("局 %s 数据传送结束"),p->Name);

break;
//return 0;
}
else
if(iLen==SOCKET_ERROR) // 网络错误
{
int
err=WSAGetLastError();
if (err==WSAECONNRESET
||err==WSAECONNABORTED)
strtempMsg.Format(_T("%s连接中断"),p->Name);

p->connectstate=false;

break; //
退出do-while循环准备重连
// return -2; //连接异常中断
}

......
.....省略代码

}while//do-while

} //else

closesocket(s); //关闭套接字
} // end of
while(1)

WSACleanup();

return 0;

}

热心网友 时间:2023-10-15 13:11

由于当网络出现故障时,recv要很长时间才能返回,如果你觉得这种方式不能接受,可以考虑select或者其他模型。

UINT CMonitorDlg::ThreadFunction(LPVOID pParam)
{

WSADATA wsaData;
WSAStartup(...);

while(1)
{

if (WaitSingleObject(hEventKill, 0) == WAIT_OBJECT_0) //
这个hEventKill到主线程里创建,用于控制线程退出
{
break;
}

SOCKET s; //创建套接字

int port=PORT;

int iLen; //从服务器接收的数据长度
TCHAR recvbuf[BufferLen]; //接受数据的缓冲器

struct sockaddr_in serv1; //服务器端地址

serv1.sin_family=AF_INET;
//需要连接的服务器地址信息
serv1.sin_port=htons(port); //需要连接的服务器地址信息

serv1.sin_addr.s_addr=inet_addr(p->Ip); //将命令行的IP地址转化为二进制表示的网络字节顺序IP地址

s=socket(AF_INET,SOCK_STREAM,0);

if(s==INVALID_SOCKET)
{

AfxMessageBox("socket()failed");//套接字失败
return 0;
}

if(connect(s,(struct
sockaddr*)&serv1,sizeof(serv1))==INVALID_SOCKET)
{
int
b=WSAGetLastError();
//连接失败
}
else
{ //连接成功

p->connectstate=true;

do{

在此循环体中我接收数据并对数据做处理(省略部分代码)

iLen=recv(s,recvbuf,sizeof(recvbuf),0); //接收套接字中的数据放入recvbuf1缓冲区

if(iLen==0) // server调用了close
{

strtempMsg.Format(_T("局 %s 数据传送结束"),p->Name);

break;
//return 0;
}
else
if(iLen==SOCKET_ERROR) // 网络错误
{
int
err=WSAGetLastError();
if (err==WSAECONNRESET
||err==WSAECONNABORTED)
strtempMsg.Format(_T("%s连接中断"),p->Name);

p->connectstate=false;

break; //
退出do-while循环准备重连
// return -2; //连接异常中断
}

......
.....省略代码

}while//do-while

} //else

closesocket(s); //关闭套接字
} // end of
while(1)

WSACleanup();

return 0;

}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 C# 如何防止socket重连接? python socket客户端怎么实现断线重连 求代码示范 谢谢 socket 短线重连怎么实现,心跳机制又是怎样实现,四次握手步骤有哪些_百 ... C++ socket客户端断线后如何重新连接 C# socket 断线重连 java socket如果服务端掉线 客户端应该怎样重连,实现的思路是怎么样的,最好能有具体的代码参考一下 用心跳包能实现socket通信断开后自动重连吗 C# socket 通信系统,socket断线重连问题 socket 断开连接后重连 socket断线如何重连 Socket 客户端重连机制 socket通讯。要求断线后自动重连。我怎么写也没搞定。求高手 什么是工程造价管理,其基本内容有哪些,它的基本原理是什么? “项目内容”、“技术方案”和“技术路线”三者有什么区别? 项目概述是什么? 工程建设的原理是什么? Speedstep技术原理是什么意思? 好用的道好项目管理系统实现原理是什么 asp课程项目设计的基本原理和采用的主要方法与技术是什么? 乡镇双拥领导小组成员应该如何组成 websocket怎么自动重连 socket 如果不关闭会自动关闭吗?为什么要心跳连接? PHP socket重连机制实现 EXCEL如何公式设置达到指定条件自动填写指定数字 爬楼梯必须用什么的速度爬 小米手机铃声下载地址 跪求!!! 小米手机1s的内置铃声去哪里下载? 常用的楼梯相关部件名称及叫法? 清新英文歌小米手机来电铃声 小米手机里面有一个自带的铃声叫做childhood 请问一下哪里有下载的? 小米手机里的信息铃声,可以再发一下吗?或者可以指导一下怎么下载吗?感谢啦。 大连中山区西岗区哪里有做铁皮烟囱的? 爬梯子走Z形与立起爬距离相差多少? 小米手机铃声不吵人的清新小调 什么是安全爬梯?为什么现在做桥墩的都不用脚手架了 北京市消防局关于加强对厨房烟囱、排油烟管道防火安全管理的通告 儿童房连体床衣柜如何设计好 津承城际铁路要来啦!单程仅需1小时 12j8图集第95页爬梯的做法 京津城际铁路有限责任公司是国企吗?谢谢!急!