打印

请教UIP协议栈在TCP连接断开的问题

[复制链接]
8461|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 rex994997787 于 2011-10-23 10:48 编辑

移植了uIP1.0设备作为Client和服务器(电脑)建立TCP连接。
当我调用uip_close()的时候,发现TCP连接似乎没有完全断开。
再次重连的时候,就出现了报错。
重连第二次的时候,就能连上了。请大家帮我分析一下原因。
环境如下:
ENC28J60
uIP1.0
Keil4

Client :192.168.1.15
Host   :192.168.1.20
Port    :1200

首次Client 连接 Host




Client 调用uip_close()关闭TCP连接




Client 第二次连接Host 此时出现错误,原因未知




Client第三次连接Host此时正确连上




在Client 调用完uip_close()之后,uip_flags = UIP_FIN_WAIT_2。
请教一下,怎样才可以正确的关闭TCP连接呢?
沙发
rex994997787|  楼主 | 2011-10-22 18:49 | 只看该作者
自己顶一下!!!!

使用特权

评论回复
板凳
sihuijian| | 2012-2-10 16:11 | 只看该作者
先uip_abort(),中止当前连接再uip_close()

使用特权

评论回复
地板
vans88| | 2013-11-9 10:12 | 只看该作者
你好我的程序中用UIP 做server 用PC做client通过网路调试助手 进行收发数据包,但是每次只能有效通信(能够ping通和收发数据报)半个小时左右,半个小时之后PC去和开发板通信就不会有回应了(ping不通,无法发送数据包了),请问这是怎么回事?

使用特权

评论回复
5
tao180539| | 2013-11-22 14:03 | 只看该作者
你好 假如UIP ping不通  应该如何分布查找

使用特权

评论回复
6
vans88| | 2013-11-27 19:10 | 只看该作者
网卡 驱动 和uip初始化 部分

使用特权

评论回复
7
kkzz| | 2013-11-28 11:49 | 只看该作者
高端的东西的。

使用特权

评论回复
8
vans88| | 2013-11-29 13:45 | 只看该作者
UIP 服务器程序 和客户端程序如何检测到连接断开的问题呢

使用特权

评论回复
9
vans88| | 2013-11-29 13:46 | 只看该作者
如果 开发板的网线 断了 或者服务器关机了 uip客户端如何检测的到病做出调整呢

使用特权

评论回复
10
happyming0809| | 2013-11-29 15:37 | 只看该作者
去年研究过,一年多不接触了,忘记了

使用特权

评论回复
11
vans88| | 2013-12-1 10:16 | 只看该作者
关闭 连接是 一个比较妥当的方法是 现调用abort 后调用close

使用特权

评论回复
12
vans88| | 2013-12-1 10:18 | 只看该作者
大家好 我遇到一个奇怪的问题 就是UIP 连接一段时间之后 就会掉线 ping不同也无法发送数据
我的代码 如下
while(1)
        {     
             
                 
             if(flag_data==1)
             {
                     flag_data=0;
               /*向下传递指令*/
               send1(Buf.data,strlen(Buf.data),Buf_a.ip);
             }
             if(flag_data1==1)
             {
               flag_data1=0;
               /*向上传送结果*/
               {
                 send(Buf_a.data,strlen(Buf_a.data),Buf.ip);
               }
             }       
               Cs3_Work();
               Cs4_Work();
             
        }
}

/************************************************************************/
void Cs3_Work(void)
{
         netDevPoll_3();
       if(Tcp_TO==1)
                   {
           Tcp_TO=0;
           netDevTimerHandler_3();
               }
               
      /* if(Arp_TO==1)
          {
          Arp_TO=0;
                        uip_arp_timer();
         }
      */
}

/************************************************************************/
void Cs4_Work(void)
{          
            netDevPoll_4();  
          if(Tcp_TO1==1)
                   {
           Tcp_TO1=0;
           netDevTimerHandler_4();
               }
               
     /*  if(Arp_TO1==1)
          {
           Arp_TO1=0;
                   uip_arp_timer_a();
         }
        */
}       
//****************

使用特权

评论回复
13
vans88| | 2013-12-1 10:19 | 只看该作者
有没有高人给指点 一下 这是那里的问题了 我是10s调用一次 ARP 老化处理 50ms 检测一次 TCP 超时

使用特权

评论回复
14
wangbigboss| | 2014-4-29 20:56 | 只看该作者
看了您的这个帖子https://bbs.21ic.com/icview-278782-1-1.html
想问下您这个问题怎么解决的?就是tcp如何断开连接?uip_close()在哪里被调用呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

45

帖子

1

粉丝