你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于STM32F746使用LwIP_TCP_Echo_Client进行tcp/ip 客户端开发的问题

[复制链接]
xiaoxiao0932 提问时间:2017-5-1 19:53 /
最近在使用STM32F746做网络开发,移植LwIP_TCP_Echo_Client客户端的程序,电脑端使用TCP/IP调试助手建立服务器,客户端板子上电初始化配置后,在调试助手能够看到客户端已经连上服务器,并收到字符串sending11111 tcp client message 0,但是在主函数中调用 tcp_echoclient_send函数,电脑端的调试助手收不到发送的数据,这中间出现了什么问题啊?还请搞过的朋友们指点啊,先谢谢了啊!~~~~~~~~客户端配置程序如下:
void tcp_echoclient_connect(void)
{
  struct ip_addr DestIPaddr;
  /* create new tcp pcb */
  echoclient_pcb = tcp_new();
  if (echoclient_pcb != NULL)
  {
    IP4_ADDR( &DestIPaddr, DEST_IP_ADDR0, DEST_IP_ADDR1, DEST_IP_ADDR2, DEST_IP_ADDR3 );   
    /* connect to destination address/port */
    tcp_connect(echoclient_pcb,&DestIPaddr,DEST_PORT,tcp_echoclient_connected);
  }
  else
  {
    /* deallocate the pcb */
    memp_free(MEMP_TCP_PCB, echoclient_pcb);
#ifdef SERIAL_DEBUG
    printf("\n\r can not create tcp pcb");
#endif
  }
}

static err_t tcp_echoclient_connected(void *arg, struct tcp_pcb *tpcb, err_t err)
{
  struct echoclient *es = NULL;

  if (err == ERR_OK)   
  {
    /* allocate structure es to maintain tcp connection informations */
    es = (struct echoclient *)mem_malloc(sizeof(struct echoclient));

    if (es != NULL)
    {
      es->state = ES_CONNECTED;
      es->pcb = tpcb;

      sprintf((char*)data, "sending11111 tcp client message %d", (int)message_count);

      /* allocate pbuf */
      es->p_tx = pbuf_alloc(PBUF_TRANSPORT, strlen((char*)data) , PBUF_POOL);

      if (es->p_tx)
      {      
        /* copy data to pbuf */
        pbuf_take(es->p_tx, (char*)data, strlen((char*)data));

        /* pass newly allocated es structure as argument to tpcb */
        tcp_arg(tpcb, es);

        /* initialize LwIP tcp_recv callback function */
        tcp_recv(tpcb, tcp_echoclient_recv);

        /* initialize LwIP tcp_sent callback function */
        tcp_sent(tpcb, tcp_echoclient_sent);

        /* initialize LwIP tcp_poll callback function */
        tcp_poll(tpcb, tcp_echoclient_poll, 1);

        /* send data */
        tcp_echoclient_send(tpcb,es);
                               
        return ERR_OK;
      }
    }
    else
    {
      /* close connection */
      tcp_echoclient_connection_close(tpcb, es);

      /* return memory allocation error */
      return ERR_MEM;  
    }
  }
  else
  {
    /* close connection */
    tcp_echoclient_connection_close(tpcb, es);
  }
  return err;
}




收藏 2 评论6 发布时间:2017-5-1 19:53

举报

6个回答
xiaoxiao0932 回答时间:2017-5-2 09:58:51
顶一下,大家怎么使用lWIP的TCP客户端啊?
xiaoxiao0932 回答时间:2017-5-3 09:03:51
大家有用F746作为客户端开发的吗?
jcx0324 回答时间:2017-8-4 09:38:01
可以跟踪看下当前的状态,例程估计客户端自动关闭的

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

tgwfcc 回答时间:2017-8-4 10:57:36
搞过F107的,也仅仅是调通了,收不到,一定是哪里不对,帮顶!
gujiamao 回答时间:2017-8-4 11:03:33
帮顶!!
无薪税绵 回答时间:2017-8-4 12:37:47
估计是回应的IP和MAC不对。
建议使用网络抓包工具,看看发出的数据哪错了。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版