问题描述
我正在尝试与两个不同的 stm32 设备使用基本的 TCP-IP 通信,其中一个是 TCP 客户端,一个是 TCP 服务器。在wireshark图片上;直到箭头标记客户端和服务器连接成功发送和接收数据,箭头后我重置客户端而不是 ReTransmition 消息显示。我正在使用 stm32 lwip Raw 和简单的 CubeIde tcp-echo 服务器客户端示例。
客户端初始化为 tcp_echoclient_connect
,服务器初始化为:tcp_echoserver_init
我的问题是什么,我该如何解决?
/**
* @brief Initializes the tcp echo server
* @param None
* @retval None
*/
void tcp_echoserver_init(void)
{
/* create new tcp pcb */
tcp_echoserver_pcb = tcp_new();
if (tcp_echoserver_pcb != NULL)
{
err_t err;
/* bind echo_pcb to port 7 (ECHO protocol) */
err = tcp_bind(tcp_echoserver_pcb,IP_ADDR_ANY,7);
if (err == ERR_OK)
{
/* start tcp listening for echo_pcb */
tcp_echoserver_pcb = tcp_listen(tcp_echoserver_pcb);
/* initialize LwIP tcp_accept callback function */
tcp_accept(tcp_echoserver_pcb,tcp_echoserver_accept);
}
else
{
/* deallocate the pcb */
memp_free(MEMP_TCP_PCB,tcp_echoserver_pcb);
}
}
}
客户:
/**
* @brief Connects to the TCP echo server
* @param None
* @retval None
*/
void tcp_echoclient_connect(void)
{
ip_addr_t DestIPaddr;
/* create new tcp pcb */
echoclient_pcb = tcp_new();
if (echoclient_pcb != NULL)
{
IP4_ADDR(&DestIPaddr,(uint8_t)192,(uint8_t)168,(uint8_t)1,(uint8_t)40);
/* connect to destination address/port */
tcp_connect(echoclient_pcb,&DestIPaddr,7,tcp_echoclient_connected);
}
else
{
SerialPrint("not null");
memp_free(MEMP_TCP_PCB,echoclient_pcb);
}
}
我注意到一些事情,当我重新启动客户端设备时 tcp_echoclient_connected
回调没有调用我不知道为什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)