使用nc命令通过网络传送文件

1. nc命令

nc命令和网络通信有关,nc之间可以通信,也可以和其它网络工具通信,可以使用nc -h查看帮助。Window下也可以下载或源码编译nc.exe,参考。

-l 监听模式,即服务端。 -p 指定监听的端口。 -n 后面参数解释为IP,不是域名。 -u UDP模式,默认为TCP协议。

2. 命令行数据传输

服务端 nc -l -p 10000 开启监听后,等待客户端连接,当第一个客户端连接成功后,nc将不再监听,也即监听端口被释放了,可以换个窗口使用nc -l -p 10000验证。 建立连接前,用户输入的数据会被缓存(输入回车才会真正缓存)。 建立连接后,会直接将缓存数据发送给客户端。 建立连接后,用户输入的数据(使用回车键结束),会被发送给客户端,包含换行符。 建立连接后,客户端的数据会直接显示到屏幕。 客户端关闭后,nc程序将退出。
客户端 nc -n 192.168.1.100 10000 若连接失败,直接退出,返回1。 连接成功,用户输入的数据(使用回车键结束),会被发送给服务端,包含换行符。 建立连接后,服务端的数据会直接显示到屏幕。 服务端关闭后,nc程序将退出。

3. 文件传输

不论文本还是二进制文件都可以使用管道和重定向符号,可以实现使用nc来发送和接收文件。无论是服务端发文件,还是客户端发文件,文件发送完毕,nc即退出,相应的接收端也会退出。

3.1 服务端向客户端发送文件

服务端 cat aa.txt | nc -l -p 10000 或 nc -l -p 10000 < aa.txt
客户端 nc -n 192.168.1.100 10000 > aa.txt

3.2 客户端向服务端发送文件

服务端 nc -l -p 10000 > aa.txt
客户端 cat aa.txt | nc -n 192.168.1.100 10000 或 nc -n 192.168.1.100 10000 < aa.txt

4. 数据转发

4.1 单向数据中转

中转端(先执行) nc -l -p 10000 | nc -l -p 10001
客户端1(发送数据或文件) nc -n 192.168.1.100 10000 或 cat 1.txt | nc -n 192.168.1.10000
客户端2(接收数据或文件) nc -n 192.168.1.100 10001 或 nc -n 192.168.1.10001 > 2.txt

下面的环境中,在客户端1输入的数据会在客户端2上显示,在客户端2上输入的数据会在客户端1上显示。数据都是先抵达中转端,然后通过管道重定向数据。

客户端1(先执行) nc -l -p 10000
中转端 mkfifo a.fifo cat a.fifo | nc -n 192.168.1.100 10000 | nc -l -p 10001 > a.fifo
客户端2 nc -n 192.168.1.100 10001
经验分享 程序员 微信小程序 职场和发展