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