|
如题,现在在做lwip在ucosii下的UDP广播接收功能和不接收广播数据程序。程序如下:
现在的问题是:
1、不管使用方法1还是2,他们都可以接收广播数据
2、我使用UDP调试助手发送广播数据,这个助手为什么除了给255.255.255.255发送消息外还给我的设备ip也发送了一次数据呢
如何实现udp只接收广播数据功能和不接收广播数据功能呢?先后使用setsockopt和getsockopt均没有实现,哪位仁兄做过类似的指点下,谢谢
- void UDP_Search(void *pdata)
- {
- LWIP_UNUSED_ARG(pdata);
- struct sockaddr_in server, client;
- int socket, RecvLen;
- socklen_t length = sizeof(struct sockaddr);
- ip_addr_t LocalIP;
- server.sin_family = AF_INET;
- server.sin_port = htons(12345);
-
- //方法1:绑定 INADDR_ANY IP,能收到广播数据
- server.sin_addr.s_addr = htonl( INADDR_ANY );
- //方法2:绑定本地的IP,也能收到广播数据
- IP4_ADDR(&LocalIP, 192, 168, 1, 22);
- server.sin_addr.s_addr = LocalIP.addr;
-
- socket = socket( AF_INET, SOCK_DGRAM, 0);
- bind( socket, (struct sockaddr *)&server, sizeof(server));
- while(1)
- {
- RecvLen = recvfrom(socket,Bufffer,sizeof(Bufffer),0,(struct sockaddr *)&client, &length);//阻塞线程接收UDP数据
- sendto(socket,UDP_Server_SendBuf,RecvLen,0,(struct sockaddr *)&client,length);
- OSTimeDlyHMSM(0,0,0,500);
- }
- }
复制代码 |
|