我目前正在开发一个在atmel AT91SAM7x256微控制器和我的Windows机器之间执行TCP / IP通信的应用程序。
我已成功编译并将uIP标准库链接到我的应用程序。 uIP函数正在被应用程序识别,但是我主要做的第一件事情是,应用程序在端口51719上侦听一个连接请求是:
#include <stdio.h> #include "uip.h" #define UIP_APPCALL client_app int main(void) { printf("Hello World "); uip_init(); printf("Establishing connection\n"); uip_listen(HTONS(51719)); if(uip_connected()) { printf("Connection established\n"); } return 0; }
但是程序似乎跳过了监听部分,因为它只是在退出之前打印hello world并build立连接。 我会认为,因为uip_listen()
函数,程序会在等待连接请求时进入一种无限循环(这就是完整堆栈TCP / IP库,winsock处理的事情)。
这是不是正确的方式来侦听使用uIP库的某个端口上的连接? 我将不胜感激任何帮助!
UPDATE
我试过在while
循环中插入监听:
printf("Establishing connection\n"); int c; while(1) { uip_listen(HTONS(51719)); if(c = uip_connected() != 0) { printf("Connection established\n"); break; }
但它仍然不会从remost主机连接。
}