【发布时间】:2021-01-20 15:36:26
【问题描述】:
让我感到困惑的是,鉴于套接字是双向的,为什么我不能只在客户端打开 1 个带有 socket() 的套接字,在服务器上打开一个,让它们通过这个单一套接字进行通信?
我需要一对套接字的常见用例是什么?
【问题讨论】:
-
简单?使用
socketpair,您只需要调用一个函数。 -
socketpair只是在您的进程中获取一对匿名连接的本地套接字的快速便捷方式。这不是绝对必要的,但比等效的 socket/socket/bind/listen/connect 步骤要快得多,因为这些步骤只是最终目标的开销,并且需要内核执行许多额外的步骤。 -
标题并未反映您在问题正文中实际提出的问题。在标题中您询问差异,在正文中 socketpair 用于什么。标题的答案:socket 创建 一个 socket,而 socketpair 创建 两个 socket,它们也连接彼此。