OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10418|回复: 5

网络实验2 LWIP带UCOS操作系统移植 例程问题(udp socket接收有问题)

[复制链接]

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2015-10-29
在线时间
6 小时
发表于 2015-10-30 11:46:37 | 显示全部楼层 |阅读模式
5金钱

我在做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.
不知是哪里有问题,应用程序很简单的。




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14979
金钱
14979
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-10-30 11:48:40 | 显示全部楼层
看报的错误是接收消息邮箱无效。没用过socket
开往春天的手扶拖拉机
回复

使用道具 举报

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2015-10-29
在线时间
6 小时
 楼主| 发表于 2015-10-30 11:56:31 | 显示全部楼层
在应用层经常用到select,可以对多个fd进行监听,而不用再创建线程,这样节省资源
回复

使用道具 举报

54

主题

298

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1202
金钱
1202
注册时间
2021-4-28
在线时间
458 小时
发表于 2022-7-31 17:10:14 | 显示全部楼层
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2022-12-26
在线时间
0 小时
发表于 2023-1-11 11:34:57 | 显示全部楼层
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2023-3-1
在线时间
5 小时
发表于 2023-3-1 16:49:00 | 显示全部楼层
这是“DEFAULT_UDP_RECVMBOX_SIZE”数值设置过大导致的,这个数值是用来设置UDP通信邮箱的大小。当UDP的消息邮箱太大时,空闲的RAM不够用就会导致邮箱无效,进而导致接收消息失败。解决方法就是将“DEFAULT_UDP_RECVMBOX_SIZE”的数值设小一点。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-9-21 08:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表