我有一个Linux应用程序打开一个UDP套接字并将其绑定到一个端口。我没有任何问题通过套接字发送单播数据包。我有机会发送一个广播数据包,所以我启用了SO_BROADCAST,它允许广播数据包通过,但后来我注意到单播数据包也在播出。这是一个UDP套接字的预期行为,还是更可能是我错误配置了某些东西?通过相同的套接字UDP广播和单播?
1
A
回答
2
从我所了解的SO_BROADCAST是一个套接字选项。所以如果你在套接字上启用它,这个套接字将会广播。我想你会需要打开不同的套接字,如果你想做单播和从相同的代码广播。
0
我还没有在这里编写大量的手,但是您可能需要提供有关库,操作系统版本,代码等的更多信息。也许代码示例?
如果我记得我读过的书,如果你在套接字上设置标志,这将影响从套接字发送的所有数据报,因为套接字基本上是网络标志+文件描述符的数据结构。
-1
我已经找到了Linux上同一个问题,就是让套接字在同一时间获得单播和广播。我解决了这个问题如下(伪代码):
sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
- 打开插座
setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &1)
- 从该插座允许传入和传出的广播
bind(sock, bindaddr, sizeof(struct sockaddr)
与
bindaddr.sin_family = AF_INET
bindaddr.sin_port = <YourPort>
bindaddr.sin_addr.s_addr = INADDR_ANY
- 得到任何卡上的所有传入邮件
<YourPort>
需要说明的是,有没有过滤(见警告在第3)。所以你会得到所有的消息。 发送的消息要么是单播的,要么在sendto()
的给定地址上广播。
+0
你能解释一下那&1是什么意思? – dashesy 2012-10-31 15:05:20
相关问题
- 1. UDP套接字广播和ifaddrstruct
- 2. 如何区分UDP广播和单播?
- 3. 接收UDP广播
- 4. iOS UDP广播与PHP UDP广播
- 5. 在Android中通过UDP广播PING URL?
- 6. Windows Phone 7通过wifi接收UDP数据包(广播或单播)
- 7. Udp广播vs单播:哪个更快?
- 8. UDP单播比广播更可靠吗?
- 9. UDP广播或IP多播?
- 10. Nodejs和socket.io选择套接字广播
- 11. C#UDP广播和接收示例
- 12. iPhone UDP广播和响应
- 13. 如何创建在Windows Phone的UDP广播监听套接字
- 14. Java nio udp广播
- 15. Firemonkey印UDP广播
- 16. UDP多广播nodejs
- 17. UDP广播压力
- 18. UDP广播问题?
- 19. 回应UDP广播
- 20. boost :: asio UDP广播
- 21. Android 3G UDP广播
- 22. UDP广播问题
- 23. 收听UDP广播
- 24. 如何在本地使用UDP套接字广播消息?
- 25. 通过wifi广播区域广播
- 26. 单播发送UDP不工作,但广播发送UDP确实
- 27. 使用帆进行广播通过redis存储套接字
- 28. 通过套接字在Linux中发送广播
- 29. 通过交叉连接进行UDP广播
- 30. 可以通过UDP对等连接广播网络消息吗?
谢谢。这就是我正在挖掘的东西。我想我正在期待它做一些它没有设计的事情。第二个套接字应该做的伎俩,但我猜我必须绑定到第二个端口(无赖)。 – 2009-04-29 02:12:32