c - 当我有 AF_UNIX 的 socket() 时,为什么我需要 socketpair()?

标签 c linux sockets

令我困惑的是,鉴于套接字是双向的,为什么我不能用 socket() 打开 1 个套接字?在客户端和服务器上的一个,让他们通过这个单一的套接字进行通信?
我需要一对套接字的常见用例是什么?

最佳答案

So what is the common use case that I would need a pair of sockets?


通常,您希望在父进程和子进程之间(或有时在同一进程中的线程之间)进行双向通信。
这就像 pipe 的双向等价物,并避免暴露 AF_UNIX路径或任何其他公开可见的地址,用于程序内部的内容。
有一个有效的例子 here .

关于c - 当我有 AF_UNIX 的 socket() 时,为什么我需要 socketpair()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64214231/

相关文章:

c - x86 和 x86-64 之间的套接字和可移植性

c - 如何在 C 中使用原子变量?

c - 在 Linux 上检测竞争条件的方法有哪些?

java - 需要替代 java Robot 类以在 Linux 服务器中使用

php - CakePHP 权限错误

html - C:HTTP 网络服务器 - 图像“http://localhost...无法显示,因为它包含错误”

从单个源文件创建多个文件

c - 用gdb反汇编时指针在哪里

linux - 无论 PID 结果如何,当从 ps 管道传输到 grep 时,Bash 脚本输出始终为 'ps'

java - TCP服务器只接收一条消息