如何使用netcat作为压缩代理

How to use netcat as compressing proxy

我有一个服务器以基于文本的协议接收消息。服务器不发回任何东西。由于协议不是二进制的并且没有任何压缩,因此这些消息会大量占用网络带宽。为了解决这个问题,我想在客户端和服务器端 运行 一个压缩代理。在客户端,代理应该通过 TCP 接收数据,压缩它,然后发送到服务器端代理。服务器端代理应该接收数据,解压缩,并发送到服务器应用程序。

客户端代码应该是这样的:

cd /tmp
mknod backpipe p
nc localhost 7171 0<backpipe | gzip | nc server-ip 7272 | tee backpipe

在服务器端:

cd /tmp
mknod backpipe p
nc -l -p 7272 0<backpipe | gunzip | nc -l -p 7171 | tee backpipe

服务器应用程序工作在7171端口,压缩代理使用7272端口传输数据。但出于某种原因,这对我不起作用。

你快到了。

客户端,侦听本地端口 7171,转发到 server-ip:7272:

的远程服务器
mkfifo client_rely
nc -l 7171 < client_rely | gzip -c | nc server-ip 7272 > client_rely

服务器端,监听7272端口,转发到7171端口的真实服务器:

mkfifo server_rely
nc -l 7272 < server_rely | gzip -d -c | nc 7171 > server_rely

请注意,此示例使用 macOS 附带的 nc