如果从未绑定的套接字读取会发生什么?更具体地说,在UDP套接字上?
如果套接字已用于发送信息,套接字将被绑定到端口(和地址),因此我们将监听(addr,port),但如果套接字完全解除绑定,那么预期的行为是什么? 在这种情况下,对于读操作,该套接字将如何响应select / epoll?
答案 0 :(得分:2)
它有多种指定或未指定。
来自 man 7 udp (Linux):
为了接收数据包,首先可以使用 bind(2)将套接字绑定到本地地址。否则,套接字层将自动分配一个超出
/proc/sys/net/ipv4/ip_local_port_range
定义的范围的空闲本地端口,并将套接字绑定到INADDR_ANY。
必须知道套接字的本地地址。对于服务器应用程序,请使用显式绑定函数或隐式
accept
或WSAAccept
函数。不鼓励客户端应用程序使用显式绑定。对于客户端应用程序,套接字可以使用connect
,WSAConnect
,sendto
,WSASendTo
或WSAJoinLeaf
隐式绑定到本地地址。
和
WSAEINVAL:套接字尚未绑定绑定,...
我无法回答BSD,Solaris,HP-UX,AIX,......