已复制
全屏展示
复制代码

linux socat 端口转发与文件下载

· 1 min read

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

🔗

文章推荐