2017-12-06 17 views
0

텍스트 기반 프로토콜로 메시지를받는 서버가 있습니다. 서버가 아무것도 돌려 보내지 않습니다. 이러한 메시지는 프로토콜이 바이너리가 아니며 압축이 없기 때문에 네트워크 대역폭을 많이 차지합니다. 이 문제를 해결하려면 클라이언트와 서버 측에서 압축 프록시를 실행하고 싶습니다. 클라이언트 측에서 프록시는 TCP를 통해 데이터를 수신하고 압축 한 다음 서버 측 프록시로 보내야합니다. 서버 측 프록시는 데이터를 수신하고 압축을 풀어 서버 응용 프로그램에 보내야합니다.netcat을 압축 프록시로 사용하는 방법

클라이언트 측 코드는 다음과 같이해야한다 :

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

netcat은 프로그래밍 언어 또는 프로그래밍 툴이 아닙니다. SuperUser 나 ServerFault와 같은 다른 StackExchange 사이트에서 더 나은 답변을 얻을 수 있습니다. –

답변

2

거의 도착했습니다. ,

mkfifo client_rely 
nc -l 7171 < client_rely | gzip -c | nc server-ip 7272 > client_rely 

서버 측 포트 7171에 실제 서버에 전달, 포트 7272에서 수신 : 7272를 :

클라이언트 측, 서버의 IP에서 원격 서버로 전달, 로컬 포트 ​​7171에서 수신

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

이 예제에서는 macOS와 함께 제공되는 nc을 사용합니다.