假设你有 2 个套接字(每个都将被其他 TCP 对等点监听)每个都驻留在同一个进程中,这些套接字如何绑定(bind),这意味着彼此的输入流将绑定(bind)到另一个的输出流。套接字会不断地携带数据,不会发生等待。通常线程可以解决这个问题,但是,除了创建线程之外,还有更有效的管道套接字方法吗?
最佳答案
如果需要将套接字的两端连接到同一个进程,请改用pipe()
函数。此函数返回两个文件描述符,一个用于写入,另一个用于读取。为此目的,实际上不需要涉及 TCP。
更新:根据您对用例的说明,不,没有任何方法可以告诉操作系统将两个不同套接字的末端连接在一起。您将不得不编写代码以从一个套接字读取并将相同的数据写入另一个套接字。根据流程的体系结构,您可能需要也可能不需要额外的线程来完成这项工作。例如,如果您的应用程序基于 select()
循环,则无需创建另一个线程。
关于TCP套接字管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1886784/