2009-12-11 104 views
1

假设您有2个套接字(每个套接字将被其他TCP对等端监听),每个套接字驻留在同一个进程上,这些套接字如何绑定,这意味着彼此的输入流将绑定到其他输出流。套接字将持续传输数据,不会等待。通常螺纹可以解决这个问题,但是,而不是创建螺纹有更有效的方式管道插座?TCP套接字管道

回答

1

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

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

+0

事实上,这些套接字将被客户端收听,所以需要套接字 – whoi 2009-12-11 09:21:21

+0

看来我误解了你的用例。我会更新我的答案。 – 2009-12-11 09:23:43

+0

你是说socket select()函数吗,你能澄清一下吗? – whoi 2009-12-11 09:32:37

0

您可以在进程中避免使用事件队列的线程。 WP Message queue文章假设您希望进程间消息传递,但是如果您使用套接字,那么您正在通过同一进程传递进程间消息。