STM32以太网连接问题

[复制链接]
4178|8
手机看帖
扫描二维码
随时随地手机跟帖
zhouzhihongcs|  楼主 | 2012-1-4 10:15 | 显示全部楼层 |阅读模式
我的平台是STM32F107,基于ucos系统,lwip协议栈为1.3.0,下载下位机为server模式,上位机能够拼通下位机,但是上位机网络测试软件发送建立连接时,不能连接,跟踪下位机netconn_accept没有返回,不知什么原因?我移植的代码参考官方的软件:STM32_F107_lwIP_uCOS软件包。
部分代码:
   if (bind(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) == -1)
   {
       mem_free(recv_data);
       return;
   }
   /* 在socket上进行监听 */
   if (listen(sock, 5) == -1)
   {
       mem_free(recv_data);
       return;
   }
   while(stop != TRUE)
   {
       sin_size = sizeof(struct sockaddr_in);
       connected = accept(sock, (struct sockaddr *)&client_addr, &sin_size);
        /* 客户端连接的处理 */
       while (1)
       {
            // send(connected, send_data, strlen(send_data), 0);
             bytes_received = recv(connected,recv_data,ECV_BUFFER_SIZE,0);
                ----------------
      }
  }
当上位机发送连接请求时,accept()没有返回连接,因而无法处理数据。
zhouzhihongcs|  楼主 | 2012-1-5 10:42 | 显示全部楼层
使用tcp帧分析仪跟踪,建立连接时,实现了四次握手,一般连接只实现三次,为什么server会多发送一次握手,
pc(为client)  stm32f107(为server),握手如下:
  pc----->  stm32f107      第一次握手
   pc <------stm32f107     第二次握手
   pc -------->stm32f107   第三次握手
  pc <----------stm32f107  第四次握手(正常连接,没有第四次握手)
跟踪lwip协议栈,
/* return ARP reply */
      netif->linkoutput(netif, p);发送了两次(etharp_arp_input()函数调用了两次???)

使用特权

评论回复
zhouzhihongcs|  楼主 | 2012-1-6 16:07 | 显示全部楼层
结贴

使用特权

评论回复
火箭球迷| | 2012-1-7 09:13 | 显示全部楼层
问题如何解决的

使用特权

评论回复
baidudz| | 2012-1-7 09:18 | 显示全部楼层
楼主可以共享一下经验

使用特权

评论回复
kevins_cheng| | 2014-2-27 15:38 | 显示全部楼层
楼主可否共享一下,你的stm32f107+ucosii+lwip资源呢?最近一直在忙这个,就是ping不通,我的QQ 1326 1340 16,谢谢哈

使用特权

评论回复
haibianbian| | 2014-3-17 09:45 | 显示全部楼层
楼主,你好,我也在做以太网网口打开工作,我是实习生,你能否留下你的QQ号,有些问题想请教你。要不你加我的也行:304231915

使用特权

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

本版积分规则

0

主题

14

帖子

0

粉丝