TCP重连问题 快速多次重连

asd046012 2016-01-25 10:12:32
各位大神好。现在我使用 lwip 1.4.1协议建立个小型服务器(大概3个设备会连上服务器(设备是手机)。客户端使用一个ip地址 不同的端口和服务器建立TCP连接(使用环境:一个连上服务器后 马上断开,然后过一两秒又马上连接,心跳是10秒一个),现在我们测试发现:一个连上后 马上断开 过两秒后马上连接 手机有做关闭处理的 这时必须要等先前那个连接要跑到心跳检测程序 执行关闭处理后 另一个才能连接上。手机APP方面没问题 已经测试过了 能 和其它服务器建立两路连接 现在这个问题已经困扰我两天 请大神们指点一下啊! 下面是服务器的代码

int listenfd;
int remotefd;
struct sockaddr_in local_addr,remote_addr;
listenfd = socket(AF_INET,SOCK_STREAM,0);
if(listenfd == -1)
{
printf("listenfd error\n");
return;
}

int n_yin=1;
setsockopt(listenfd,SOL_SOCKET ,SO_REUSEADDR,(const char*)&n_yin,sizeof(n_yin));

local_addr.sin_family = AF_INET;
local_addr.sin_port = htons(7685);
local_addr.sin_addr.s_addr = htonl(INADDR_ANY);
local_addr.sin_len = sizeof(local_addr);
len = sizeof(remote_addr);

if (bind(listenfd, (struct sockaddr *) &local_addr, sizeof(local_addr)) < 0)
{
printf("tcp bind error\r\n");
return ;
}
if(listen(listenfd,3) < 0)
{
printf("listen error\n");
return;
}
while(1)
{
remotefd = accept(listenfd,(struct sockaddr_in *)&remote_addr,&len);
if(remotefd < 0)
{
//数据处理
}
}
...全文
664 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhxingway 2016-04-15
  • 打赏
  • 举报
回复
引用 4 楼 asd046012 的回复:
解决了 增加了socket关闭检测 sever端能快速检测到连接的断开 然后close 掉 就可以了
要Server关掉客户端,下一个客户端才能连接上是吗?只支持一个连接?
asd046012 2016-03-14
  • 打赏
  • 举报
回复
解决了 增加了socket关闭检测 sever端能快速检测到连接的断开 然后close 掉 就可以了
asd046012 2016-01-28
  • 打赏
  • 举报
回复
设备端会调用close函数 close掉
  • 打赏
  • 举报
回复
断开你是怎么通知服务器的呢?
nswcfd 2016-01-25
  • 打赏
  • 举报
回复
引用
能 和其它服务器建立两路连接
其它服务器是非Lwip实现(例如标准协议栈)? 会不会是lwip特有的行为?

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧