连接UDP套接字,但仍然接收来自其他源的数据报
Connect a UDP socket, but still receive datagrams from other sources
是否可以像connect
一样设置UDP套接字的默认目标,但不会失去从其他源接收数据报的能力?
我谈论的是本机操作系统套接字API(BSD-socket/winsock2(,我对linux和windows平台的答案很感兴趣。
[编辑:]
如果不清楚,下面是连接文档中有问题的部分:
如果套接字sockfd的类型为SOCK_DGRAM,则addr是默认情况下发送数据报的地址,也是接收数据报的唯一地址。
是否可以仅设置UDP套接字的默认目标像connect一样,但又不会失去从其他来源接收包的能力?
据我所知,它不是——UDP套接字上的connect()
都设置了默认发送目的地,并且安装了一个筛选器,以便丢弃来自指定地址/端口以外的所有其他目的地的传入UDP数据包。
我对这个问题的解决方案是只调用sendto()
和recvfrom()
(如果你的代码库中有一个UDPSocket
类或类似的类,你可以将默认的发送地址缓存为该类中的一个私有成员变量,这样代码库的其余部分就可以只调用Send()
方法,并让该方法来处理sendto()
参数(
相关文章:
- 如何使用 asio 本地数据报构建回显服务器和客户端?
- 连接UDP套接字,但仍然接收来自其他源的数据报
- QCombobox,字符串旁边有项目的其他数据
- UDP 客户端(接收器)未按预期接收数据报
- 如何对 int 变量应用验证,使其仅接受整数数据,并且在任何其他数据的情况下不会出错?
- GLSL 计算着色器 使用查找表设置缓冲区会导致不写入任何数据,与其他数据设置相同的缓冲区有效
- 如何将模运算符与其他数据类型一起使用
- 将指针与其他数据相关联
- QT UDP套接字返回空数据报
- 为什么数据中的随机部分替换了曾经存储在我的角色数组中的其他数据
- 如何仅接受整数并忽略其他数据类型
- 编译器是否有可能检测整数溢出或其他数据类型溢出的可能性
- 在Wireshark中看到的数据报,未由QT UDP套接字收到
- QUdpSocket:无法接收数据报
- Udp 在 QT 定时器信号中写入数据报
- 协议缓冲区、Apache Thrift或任何其他数据结构序列化协议中的递归数据结构
- 其他数据以及 TCP 连接请求
- 是否可以在数据报套接字中同时用于发送和接收
- 通过Boost Asio获取UDP数据报长度
- QUdpsocket在处理前一个数据报时丢失数据报