OpenEdv-开源电子网

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

lwip下建立2个UDP socket任务,一个不接收广播数据,一个只接收广播数据,如何实现

[复制链接]

6

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
348
金钱
348
注册时间
2014-8-31
在线时间
43 小时
发表于 2018-1-18 21:48:27 | 显示全部楼层 |阅读模式
10金钱
我使用lwip 2.0.3在ucosIII建立了2个UDP Scoket任务,初始化代码如下:
[mw_shl_code=applescript,true]  server.sin_family       = AF_INET;
  server.sin_port         = htons( 8888);
server.sin_addr.s_addr  = htonl( INADDR_ANY );
  sock = socket( AF_INET, SOCK_DGRAM, 0 );
  bind( sock, (struct sockaddr *)&server, sizeof( server ) ); [/mw_shl_code]

然后使用recvfrom和sendto接收,发送数据,现在两个任务都可以接收到广播数据,但是任务1不想收到广播数据,如何关闭该任务socket的广播接收功能呢?
如果打开下面的宏,两个任务都无法接收广播数据了,但是任务2我还想接收广播数据。难道lwip不能单独设置某个socket的广播功能吗?


[mw_shl_code=applescript,true]#define IP_SOF_BROADCAST                 1//发送广播包过滤(禁止)功能,1使能,0禁止
#define IP_SOF_BROADCAST_RECV            1//接收广播包过滤(禁止)功能,1使能,0禁止[/mw_shl_code]

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-1-19 01:28:04 | 显示全部楼层
回复

使用道具 举报

0

主题

207

帖子

0

精华

高级会员

Rank: 4

积分
959
金钱
959
注册时间
2017-5-27
在线时间
108 小时
发表于 2018-1-19 09:12:28 | 显示全部楼层
创建socket的时候就进行限定
回复

使用道具 举报

6

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
348
金钱
348
注册时间
2014-8-31
在线时间
43 小时
 楼主| 发表于 2018-1-19 10:08:14 | 显示全部楼层
回复

使用道具 举报

6

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
348
金钱
348
注册时间
2014-8-31
在线时间
43 小时
 楼主| 发表于 2018-1-19 10:09:40 | 显示全部楼层
lanlzp 发表于 2018-1-19 09:12
创建socket的时候就进行限定

setsockopt没有关闭广播功能的参数啊,下面的语句只能打开广播

[mw_shl_code=applescript,true]int optVal = 1;
setsockopt(sock,SOL_SOCKET,SO_BROADCAST,(void *)optVal,sizeof(int));[/mw_shl_code]
回复

使用道具 举报

6

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
348
金钱
348
注册时间
2014-8-31
在线时间
43 小时
 楼主| 发表于 2018-1-19 10:35:24 | 显示全部楼层
lanlzp 发表于 2018-1-19 09:12
创建socket的时候就进行限定

大侠能否说明白点呢?
回复

使用道具 举报

6

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
348
金钱
348
注册时间
2014-8-31
在线时间
43 小时
 楼主| 发表于 2018-1-19 10:51:28 | 显示全部楼层
lanlzp 发表于 2018-1-19 09:12
创建socket的时候就进行限定

int socket(int domain, int type, int protocol);

这个创建函数中没有设置广播的呢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 21:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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