我目前正在开发一个应用程序,用于在atmel AT91SAM7x256微控制器和我的Windows机器之间执行TCP / IP通信。
我已成功编译并将uIP标准库链接到我的应用程序。 uIP函数正在被应用程序识别,但我在main中做的第一件事是,应用程序在端口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并在退出之前建立连接。我会想到,由于uip_listen()
函数,程序在等待连接请求时会进入一种无限循环(这就是完整堆栈TCP / IP库,winsock处理事务的方式)。
这不是使用uIP库侦听某个端口上的连接的正确方法吗?我将不胜感激任何帮助!
更新
我尝试在while
循环中插入监听:
printf("Establishing connection\n");
int c;
while(1)
{
uip_listen(HTONS(51719));
if(c = uip_connected() != 0)
{
printf("Connection established\n");
break;
}
但它仍然无法从remost主机连接 }