我在做LWIP带UCOS操作系统移植 例程实验时,简单更改了tcp_server_thread函数,测试情况是TCP socket收发都正常,
但UDP socket收有问题,发正常。具体代码如下:
static void tcp_server_thread(void *arg)
{
struct sockaddr_in servaddr,cliaddr;
int servsockfd;
int nret;
int datalen,i;
servsockfd=lwip_socket(AF_INET,SOCK_DGRAM,0);
printf("lwip_socket creat servsockfd=%d",servsockfd);
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(host_port);
nret=lwip_bind(servsockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));
printf("bind nret=%d",nret);
while(1){
datalen = lwip_recvfrom(servsockfd, databuff, sizeof(databuff),0,(struct sockaddr *)&cliaddr,NULL );
if(datalen > 0){
printf("datalen =%d",datalen);
}
}
}
出现的问题如下: lwip_recvfrom返回错误。即
LWIP_ERROR("netconn_accept: invalid recvmbox", sys_mbox_valid(&conn->recvmbox), return ERR_CONN;);
netconn_recv返回ERR_CONN.
不知是哪里有问题,应用程序很简单的。
|