BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #30423同步于 2008/10/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

socket 发送广播包

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