【发布时间】:2018-07-06 14:17:34
【问题描述】:
场景很简单:
使用 TCP/IP 我有一个连接到我的客户端(服务器)我想将套接字发送给我的数据转发到我打开的另一个套接字,并将我从该套接字接收的数据向后转发。就像代理一样。
现在我有 1 个线程来监听传入的连接,并在建立来自客户端的连接时产生另外 2 个线程。我必须使用一种机制在线程中进行通信。
有什么更简单的东西可以用作 TCP/IP 代理吗? Linux 是否有套接字转发或某种机制?
【问题讨论】:
-
为什么在传入连接上产生两个新线程?一个就足够了,它可以在两个连接之间进行发送和接收。阅读有关非阻塞套接字和
select系统调用的信息。 -
更简单的东西到底是什么意思?套接字本身不会神奇地做任何事情,您需要手动编写代码来接收和转发流量。通常有几种可用的开源代理,例如 squid。但它们基本上是网络代理。不适用于任何 tcp 连接,而仅适用于 HTTP。