2016-12-22 58 views
0

我配置在微控制器(服務器)使用了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客戶端?

回答

0

你錯了。如果您的應用程序是一個服務器,然後正確的使用方法看起來更或多或少是這樣的:

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