Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TCP承插管_Tcp_Sockets_Pipe - Fatal编程技术网

TCP承插管

TCP承插管,tcp,sockets,pipe,Tcp,Sockets,Pipe,假设您有两个套接字(每个套接字将被其他TCP对等方侦听),每个套接字驻留在同一进程上,这些套接字如何绑定,这意味着彼此的输入流将绑定到另一个的输出流。套接字将持续传输数据,不会发生等待。通常情况下,线程可以解决此问题,但有没有比创建线程更有效的管道插座方法?如果需要将插座两端连接到同一进程,请改用pipe()函数。此函数返回两个文件描述符,一个用于写入,另一个用于读取。实际上,没有必要为了这个目的而使用TCP 更新:根据您对用例的说明,不,没有任何方法可以告诉操作系统将两个不同套接字的端部连接在

假设您有两个套接字(每个套接字将被其他TCP对等方侦听),每个套接字驻留在同一进程上,这些套接字如何绑定,这意味着彼此的输入流将绑定到另一个的输出流。套接字将持续传输数据,不会发生等待。通常情况下,线程可以解决此问题,但有没有比创建线程更有效的管道插座方法?

如果需要将插座两端连接到同一进程,请改用
pipe()
函数。此函数返回两个文件描述符,一个用于写入,另一个用于读取。实际上,没有必要为了这个目的而使用TCP


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

如果需要将套接字的两端连接到同一进程,请改用
管道()
函数。此函数返回两个文件描述符,一个用于写入,另一个用于读取。实际上,没有必要为了这个目的而使用TCP


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

您可以避免进程中带有事件队列的线程。WP文章假设您需要进程间消息传递,但如果您使用的是套接字,则可能是在同一进程上进行进程间消息传递。

您可以避免进程内具有事件队列的线程。WP文章假设您需要进程间消息传递,但如果您使用套接字,则在同一进程上进行进程间消息传递。

事实上,这些套接字将被客户端监听,因此需要socket。看起来我误解了您的用例。我会更新我的答案。你是说socket select()函数,你能澄清一下吗?是的,我指的是socket
select()
函数。您没有提到您使用的是哪种语言或框架,因此我假设使用类似于C的标准套接字库(适用于所有常见操作系统)。
select()
循环体系结构使用单个主循环安排程序,该主循环调用
select()
监视应用程序打开的任何套接字上发生的事件。当事件发生时,您的程序将通过读取或写入套接字(重要的是,不阻塞)对此作出反应,然后返回主循环等待下一个事件。事实上,客户端将侦听这些套接字,因此需要socket。我似乎误解了您的用例。我会更新我的答案。你是说socket select()函数,你能澄清一下吗?是的,我指的是socket
select()
函数。您没有提到您使用的是哪种语言或框架,因此我假设使用类似于C的标准套接字库(适用于所有常见操作系统)。
select()
循环体系结构使用单个主循环安排程序,该主循环调用
select()
监视应用程序打开的任何套接字上发生的事件。当事件发生时,您的程序将通过读取或写入套接字(重要的是,不阻塞)对此作出反应,然后返回主循环等待下一个事件。