uip tcp client,abort一次后,如何重连。先立个flag,解决了贴代码

下面是原来代码,如果开机时TCP服务器不在线,会运行打印一次
“port: 1400 TCP client abort!”。
后续就不会尝试连接服务器。

void tcp_appcall(void)
{	 
  tcpServerApi();
  tcpClientApi();
}

typedef struct client_api
{
  char  index;
  void  (*recvFunc)(char *,int);
  int   port;
  void  (*pollFunc)(void);
}client_api_t;

#define CLIENT_APP_NUM  1
client_api_t client_list[CLIENT_APP_NUM] = 
{
  {1,tcp_clientTestApp,TCP_CLI_TEST_PORT,   tcp_clientTestPoll},
//  {2,artnetApp,        TCP_CLI_ARTNET_PORT, artnetPoll}
};

void tcpClientApi(void)
{
  char app_index;
  
  for(app_index=0; app_index<CLIENT_APP_NUM; app_index++)
  {
    if(client_list[app_index].index != 0)
    {
      if(uip_conn->rport == HTONS(client_list[app_index].port))
      {
        if(uip_aborted())
        printf("port: %d  TCP client abort!\n",client_list[app_index].port);
        
        if(uip_timedout())
        printf("port: %d  TCP client timeout!\n",client_list[app_index].port);
        
        if(uip_closed())
        printf("port: %d  TCP client close!\n",client_list[app_index].port);

       if(uip_connected()) {
         printf("port: %d  TCP client connect!\n",client_list[app_index].port);
         uip_send("welcome HMC-D client!\n",strlen("welcome HMC-D client!\n"));
         return;
        }
        
        if(uip_acked())
          printf("port: %d  TCP client ack!\n",client_list[app_index].port);
        
        if(uip_rexmit())
        {
          printf("port: %d  TCP client rexmit!\n",client_list[app_index].port);
//          uip_send(tcp_client_rcv_buf,uip_len);
        }
       
        if(uip_newdata())
        {
          printf("port: %d  TCP client recieve a new data!\n ",client_list[app_index].port);
          memcpy(tcp_client_rcv_buf,uip_appdata,uip_len);
          client_list[app_index].recvFunc(tcp_client_rcv_buf,uip_len);          
        }
        if(uip_poll())
        {
          client_list[app_index].pollFunc();
        }
      }      
    }
  } 
}

fff

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值