socat 可以在两个不同的网络连接之间建立数据传输通道,并支持多种协议TCP/UDP/SOCKET, socat 有着非常强灵活性和强大的功能。
安装 socat 命令
# 安装
sudo apt-get install socat
sudo yum install socat
socat 实现端口转发
# 访问本机的 9999 端口,会自动转发到本机的 9097 端口
socat TCP-LISTEN:9999,fork,reuseaddr TCP:127.0.0.1:9097
# 访问本机的 9999 端口,会自动转发到 192.168.39.128 的 9097 端口
socat TCP-LISTEN:9999,fork,reuseaddr TCP:192.168.39.128:9097
socat 实现简单 http server 服务
# 运行此命令后,浏览器访问 8888 端口
socat -v -ls TCP-LISTEN:8888,reuseaddr,crlf,fork SYSTEM:"echo HTTP/1.0 200; echo Content-Type\: text/plain; echo; echo \"hello from $(hostname) at \$(date)\""
socat 实现通过 http server 服务查看纯文本
# 运行此命令后,浏览器访问 8888 端口
socat -v -ls TCP-LISTEN:8888,reuseaddr,crlf,fork SYSTEM:"echo HTTP/1.0 200; echo Content-Type\: text/plain; echo; cat /tmp/xxx.txt"
socat 实现下载文件:服务端发送文件到客户端 (socat Server sending file)
# 服务端启动端口 9876
socat -u FILE:/tmp/xxx.txt TCP-LISTEN:9876,reuseaddr
# 客户端访问服务端的9876打开读取文件,并保存到本地 aaa.txt
socat -u TCP:127.0.0.1:9876 OPEN:/tmp/aaa.txt,creat
socat 实现下载文件:服务端接收来自客户端的文件(socat Server receiving file)
# 服务端开启监听端口 9876,等待客户端上传数据
socat -u TCP-LISTEN:9876,reuseaddr OPEN:/tmp/out.txt,creat && cat /tmp/out.txt
# 客户端读取 xxx.txt 文件上传到 服务端 9876 端口
socat -u FILE:/tmp/xxx.txt TCP:127.0.0.1:9876