我有一台服务器,它以基于文本的协议接收消息。服务器不发回任何东西。由于协议不是二进制且没有任何压缩,因此这些消息会大量占用网络带宽。为了解决这个问题,我想在客户端和服务器端运行压缩代理。在客户端,代理应该通过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端口传输数据。但出于某种原因,这对我不起作用。
答案 0 :(得分:2)
你几乎到了那里。
客户端,侦听本地端口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
。