LWIP + RTOS重新连接

LWIP + RTOS重新连接

问题描述:

我配置在微控制器(服务器)使用了LwIP + RTOS连接到PC(客户端程序)的TCP连接LWIP + RTOS重新连接

conn = netconn_new(NETCONN_TCP); 
netconn_bind(conn, &MyIPAddr, PORT); 

do 
{ 
osDelay(5); 
} 
while((netconn_connect(conn, &DestIPaddr, TCP_PORT)!= ERR_OK) //wait until a PC client will be available 

如果TCP客户端程序已经在PC上运行,一切正常。但是,如果我在微控制器上执行netconn_connect(..)函数后启动PC客户机,while()条件永远不会成为ERR_OK。 如何修改代码以正确连接到PC客户端?

你错了。如果您的应用程序是一个服务器,然后正确的使用方法看起来更或多或少是这样的:

listenNetconn = netconn_new(NETCONN_TCP); 
netconn_bind(listenNetconn, IP_ADDR_ANY, port); 
netconn_listen(listenNetconn); 
netconn_accept(listenNetconn, &clientNetconn); // wait for connection 

现在,你应该使用clientNetconn接收/发送数据。 listenNetconn仅用于侦听新的传入连接,仅此而已。

下面是非官方lwIP维基的一个例子 - http://lwip.wikia.com/wiki/Netconn_Accept