下面是原来代码,如果开机时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