我有一个Linux应用程序打开一个UDP套接字并将其绑定到一个端口。 我没有任何问题通过套接字发送单播数据包。 我有机会发送一个广播数据包,所以我启用了SO_broADCAST,它允许广播数据包通过,但是我注意到单播数据包也被广播了。 这是一个UDP套接字的预期行为,还是更可能是我错误configuration了一些东西?
在python中,start_new_thread不是执行socket accept的函数
Multipe Send()和Recv()使用Winsock2
有没有办法获得unix套接字连接的另一端的uid
在socket.close被调用之后,socket.read_some需要一段时间才能返回
从我所了解的SO_broADCAST是一个套接字选项。 所以如果你在套接字上启用它,这个套接字将会广播。 我想你会需要打开不同的套接字,如果你想做单播和从相同的代码广播。
我没有在这里编写很多的手,但是你可能需要提供关于库,操作系统版本,代码等的更多信息。也许代码示例?
如果我记得我读过的书,如果你在套接字上设置标志,这将影响从套接字发送的所有数据报,因为套接字基本上是网络标志+文件描述符的数据结构。
我已经找到了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()的给定地址上广播的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。