如何在Linux中"互连"两个插槽?

Vi.*_*Vi. 10 sockets linux networking

有两个连接的插座.我该如何互连它们?

  1. 一个套接字上出现的数据应写入另一个套接字.
  2. EOF/FIN应该很好地传播.如果一个半闭,另一个也应该半闭.
int client = get_connected_client_socket();
int proxy = get_connected_proxy_socket();
negotiate_with_proxy(proxy);
iterconnect(client, proxy); 
// Now forgot about both client and proxy. 
// System should handle IO/shutdown/close. 
// Ideally even without any support of the user-space process.

Linux能做到吗?是否可以通过欺骗连接跟踪来更改现有连接的跟踪状态?

@related 确定我可以写入文件句柄多少; 将数据从一个FH复制到另一个FH

New*_*lls 5

你知道splice()吗?根据你的两个问题,我认为这就是你的方向。最后我检查了您不能在一次拼接调用中执行此操作,因为两个文件描述符都不能是套接字。但是你应该能够通过两次调用来完成它(sockin->pipe->sockout)。另请查看tee()。这些可能并不完全是您想要的,但据我所知,它们在大致范围内。