Chinaunix

标题: 请教关于UDP接受广播和单播报文的问题 [打印本页]

作者: snowall    时间: 2009-11-13 20:07
标题: 请教关于UDP接受广播和单播报文的问题
接收UDP报文的时候,如果要socket既能接收单播又能接受广播是不是必须要绑定到ANY地址才行?

假如我的IP是 192.168.1.15/24

在windows下面,我只要绑定到192.168.1.15并且设置广播选项,就可以使用该socket接收到目标地址为192.168.1.15以及192.168.1.255的报文。
但是Linux下面,如果绑定192.168.1.15则只能接收到目标地址为192.168.1.15,如果绑定到192.168.1.255则只能接收到目标地址为192.168.1.255的报文。

Linux下面有没有办法达到Windows那样的效果。
作者: emmoblin    时间: 2009-11-14 23:08
应用层还真不知道如何做。
我能想到就是注册hook函数,把广播包hook出来
作者: dragonfly0427    时间: 2009-11-16 20:13
我的看法是
struct sockaddr_in server_addr;
server_addr.sin_addr.s_addr=htonl(INADDR_ANY);

可以去试试,
你在linux下用tcp去实现windows下的udp,
tcp和ucp是两个不同的链接方式




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2