连接UDP套接字,但仍从其他来源接收数据报

是否可以像connect一样设置UDP套接字的默认目的地,但又不失去从其他来源接收数据报的能力?

我正在谈论本机OS套接字API(BSD-socket / winsock2),并且我对Linux和Windows平台的答案感兴趣。

[ EDIT :]
如果不清楚,这是connect docs中有问题的部分:

  

如果套接字sockfd的类型为SOCK_DGRAM,则addr是默认情况下向其发送数据报的地址,并且是唯一从其接收数据报的地址。

jayxh314 回答:连接UDP套接字,但仍从其他来源接收数据报

  

是否可以仅设置UDP套接字的默认目标   像connect一样,但又不会失去从其他来源接收软件包的能力?

据我所知,这不是-UDP套接字上的connect()既设置了默认发送目的地,又安装了过滤器,以便从所有接收的UDP数据包除了指定的地址/端口以外的其他目的地也将被丢弃。

我对这个问题的解决方案是只调用sendto()recvfrom()(如果您的代码库中有UDPSocket类或类似的类,则可以将默认发送地址缓存为该类中的私有成员变量,以便您的代码库的其余部分可以仅调用Send()方法,并将其留给该方法以处理sendto()参数)

本文链接:https://www.f2er.com/3166394.html

大家都在问