TCP套接字管道

标签 tcp sockets pipe

假设你有 2 个套接字(每个都将被其他 TCP 对等点监听)每个都驻留在同一个进程中,这些套接字如何绑定(bind),这意味着彼此的输入流将绑定(bind)到另一个的输出流。套接字会不断地携带数据,不会发生等待。通常线程可以解决这个问题,但是,除了创建线程之外,还有更有效的管道套接字方法吗?

最佳答案

如果需要将套接字的两端连接到同一个进程,请改用pipe() 函数。此函数返回两个文件描述符,一个用于写入,另一个用于读取。为此目的,实际上不需要涉及 TCP。

更新:根据您对用例的说明,不,没有任何方法可以告诉操作系统将两个不同套接字的末端连接在一起。您将不得不编写代码以从一个套接字读取并将相同的数据写入另一个套接字。根据流程的体系结构,您可能需要也可能不需要额外的线程来完成这项工作。例如,如果您的应用程序基于 select() 循环,则无需创建另一个线程。

关于TCP套接字管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1886784/

相关文章:

java - Delphi 到 Java 代码的转换

c - 如何在 C 中使用 "popen"写入和读取同一文件

c - 在 C 中将字符写入管道

networking - 当 Dup Ack 到达时,TCP 是否会增加其拥塞窗口?

bash - 什么可以防止频繁切换具有多个接口(interface)的机器的默认源 ip

c - 将文件从服务器复制到客户端

c - C中的多管道bash风格

sockets - 是否可以仅通过客户端证书验证而不是服务器证书验证来建立 ssl 握手?

linux - 如果我们关闭一个关闭的套接字会发生什么

Swift 通过 TCP 套接字发送十六进制数据