返回信息流创建一个socket,bind到本机地址+某端口,这样是不是只能接收单播包,不能接收广播包了?
为什么我设置static int so_broadcast = 1;
setsockopt(sockfd1, SOL_SOCKET, SO_BROADCAST,&so_broadcast, sizeof(so_broadcast));
之后只能接收单播包不能接收广播包?是不是不bind本地地址和端口就可以?
这是一条镜像帖。来源:北邮人论坛 / soft-design / #30423同步于 2008/10/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
socket 发送广播包
zxqw
2008/10/10镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
IPv4广播只支持UDP与RAW套接口
使用UDP的话,服务器端需要bind到本地地址与一个port
对应的客户端需要向本地子网定向广播地址发送数据,并指定端口号为服务器bind时所分配的port
那这样的话服务器可以既接收单播又接收广播吗?
【 在 oceanheart 的大作中提到: 】
: IPv4广播只支持UDP与RAW套接口
: 使用UDP的话,服务器端需要bind到本地地址与一个port
: 对应的客户端需要向本地子网定向广播地址发送数据,并指定端口号为服务器bind时所分配的port
当然可以,服务器端的应用进程是不知道上来的分组是来自广播,还是来自单播,下面各层把这个信息给屏蔽了。
【 在 zxqw 的大作中提到: 】
: 那这样的话服务器可以既接收单播又接收广播吗?
是这样的,一个机器上有两个进程,父进程(bind 本地地址+port1)接收单播包后exec子进程,子进程中发送广播包并接收处理另一个机器发来的广播包,因此在子进程中我新开一个socket,并bind到本地地址+port2,设定一个子网的广播地址,发送广播包,但是两个机器间互相收不到广播包
【 在 oceanheart 的大作中提到: 】
: 当然可以,服务器端的应用进程是不知道上来的分组是来自广播,还是来自单播,下面各层把这个信息给屏蔽了。