c++ - sendto 或 connect 是否为套接字任意分配地址和端口?

标签 c++ sockets

我想知道如果我不调用bind,套接字什么时候会得到它的地址和端口。 sendtoconnect 是否将一个分配给套接字(如果套接字还没有)?另外,如果我不调用 bind 用于监听套接字,这是否意味着我永远不会从 acceptrecvfrom 中得到任何东西(因为它没有没有 IP 地址或端口)?

最佳答案

是的,如果您没有显式调用 bind()connect()sendto() 会执行隐式绑定(bind)。它们将绑定(bind)到任何网络适配器上的可用随机临时端口,该端口具有到目标地址的最低成本路由。

您不能在尚未绑定(bind)的套接字上调用accept()recvfrom(),您会得到一个错误。它们不执行隐式绑定(bind)。您必须明确说明您想收听的内容。

关于c++ - sendto 或 connect 是否为套接字任意分配地址和端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37708569/

相关文章:

c++ - COM方法调用意外破坏了堆栈

c++ - 程序耗尽了我所有的内存

c++ - 如何正确链接到CMake中的库(使用Boehm GC)?

java - 为什么服务器向客户端发送空白字符串?

c# - 在套接字监听器中检查请求是否通过 HTTP 或 HTTPS

c++ - 抑制特定包含 header 的 g++ 警告 "-Wliteral-suffix"

sockets - 无法使用 boost asio 设置 TCP 源端口

sockets - 如何创建中间人工具

c# - 检查服务器是否打开/关闭

c++ - move 构造函数问题