我想知道如果我不调用bind
,套接字什么时候会得到它的地址和端口。 sendto
或 connect
是否将一个分配给套接字(如果套接字还没有)?另外,如果我不调用 bind
用于监听套接字,这是否意味着我永远不会从 accept
或 recvfrom
中得到任何东西(因为它没有没有 IP 地址或端口)?
最佳答案
是的,如果您没有显式调用 bind()
,connect()
和 sendto()
会执行隐式绑定(bind)。它们将绑定(bind)到任何网络适配器上的可用随机临时端口,该端口具有到目标地址的最低成本路由。
您不能在尚未绑定(bind)的套接字上调用accept()
或recvfrom()
,您会得到一个错误。它们不执行隐式绑定(bind)。您必须明确说明您想收听的内容。
关于c++ - sendto 或 connect 是否为套接字任意分配地址和端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37708569/