在已连接的 UDP 套接字上使用 send()

Using send() on a connected UDP socket

正如我所理解的那样,我们对 TCP 套接字使用 send(),对 UDP 使用 sendto()。

现在,如果我们有一个连接的 UDP 套接字,我们可以使用 send() 发送数据而不指定地址信息。

我的问题是,使用 send() 连接 UDP 套接字会影响底层传输协议吗?

更具体地说,通信语义(可靠的数据传输、面向连接等)是否受我们使用的功能或套接字类型的影响?

As I have understood correctly, we use send() for TCP sockets and sendto() for UDP.

不是真的。对已连接的套接字使用 send,对未连接的套接字使用 sendto - 因为使用 send 将从套接字中检索目的地,而使用 sendto 则会明确给出。

由于已建立的 TCP 套接字始终处于连接状态,这隐含地意味着需要在这些套接字上使用 send 而不是 sendto。 UDP 套接字可以连接或未连接 - 在第一种情况下应使用 send,在第二种情况下应使用 sendto。这不会影响使用的协议,即它仍然是不可靠的 UDP。它只影响目的地的来源:从套接字或作为参数给出。