sockets - 加入 2 个套接字?

标签 sockets system

是否可以连接两个套接字?

例如,如果一个进程充当两个其他进程之间的消息路由器,那么在某个时刻能够退出将节省大量套接字 IO。这看起来应该是可能的,但我从来没有听说过这样做!

如果可以的话,在 Linux 和 Windows 上都可以吗?如果是这样,是否使用不同的机制来设置它?

顺便说一句:我刚刚发现这个:

Linux splice() system call.

这看起来很接近我的要求(当然假设这也适用于套接字 FD),但是 Windows 上有等效的吗?

最佳答案

据我所知,这是不可能的。

一个简单的示例:如果您的进程在三台不同的计算机上运行,​​那么代理计算机如何在不涉及 TCP/UDP/任何级别的流量重定向的情况下退出?

splice 不是一个解决方案,它只是优化 I/O 传输,避免不必要的内存复制,但无论如何,您需要一个在输入上循环并调用 splice 来“传输”数据到输出的进程(并且如果套接字是真正的网络套接字,数据必须经过网卡两次)。

安德烈律师事务所

关于sockets - 加入 2 个套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/503497/

相关文章:

c - 原始套接字发送和接收

c++ - C 套接字发送/接收缓冲区类型

java - While 循环和套接字

python - 同时使用多个双绞线套接字服务器

c++ - system() C++ 中的空格

asp.net - LocalSystem 与 System 与 Local System Windows 系统帐户

java - 编译Java GUI使系统挂起

system - 什么是阻止用户进程独立使用trap指令?

c# - 将套接字用于telnet时是否可以禁用ECHO?

c - 求解带状矩阵方程组