【发布时间】:2021-03-20 21:05:41
【问题描述】:
正如我正确理解的那样,我们将 send() 用于 TCP 套接字,将 sendto() 用于 UDP。
现在,如果我们连接了一个 UDP 套接字,我们可以使用 send() 发送数据而无需指定地址信息。
我的问题是,使用 send() 连接 UDP 套接字会影响底层传输协议吗?
更具体地说,通信语义(可靠的数据传输、面向连接等)是否受我们使用的功能或套接字类型的影响?
【问题讨论】:
正如我正确理解的那样,我们将 send() 用于 TCP 套接字,将 sendto() 用于 UDP。
现在,如果我们连接了一个 UDP 套接字,我们可以使用 send() 发送数据而无需指定地址信息。
我的问题是,使用 send() 连接 UDP 套接字会影响底层传输协议吗?
更具体地说,通信语义(可靠的数据传输、面向连接等)是否受我们使用的功能或套接字类型的影响?
【问题讨论】:
正如我正确理解的那样,我们将 send() 用于 TCP 套接字,将 sendto() 用于 UDP。
不是真的。一种是使用send 用于连接的套接字,而sendto 用于未连接的套接字——因为send 的目标将从套接字中检索,而sendto 将明确给出。
由于已建立的 TCP 套接字始终连接,这隐含地意味着需要在这些套接字上使用 send 而不是 sendto。 UDP 套接字可以连接或不连接——在第一种情况下应该使用send,在第二种情况下应该使用sendto。这不会影响使用的协议,即它仍然是不可靠的 UDP。它只影响目的地的来源:从套接字或作为参数给出。
【讨论】: