使用 nc/netcat 在主机之间方便地共享数据

陪她去流浪 桃子 2019年07月03日 编辑 阅读次数:2192

使用复制文件的方式可以在多台不同的 Linux 之间复制纯文本/文件/数据。但有时候觉得创建文件再 scp文件 再打开文件 的方式有点繁琐。 这篇文章使用 nc/netcat 并采用 C/S 架构的方式实现少量文本在主机之间的传输。

nc 的 C/S 模式

nc 本身支持多种功能:打开端口、监听端口、扫描端口。

  • 监听端口命令:nc -l host port
  • 打开端口命令:nc host port

前者即可充当TCP服务端(Server),后者即可充当TCP客户端(Client)。

客户端将标准输入作为数据发送给服务端,服务端将接收的数据输出到标准输出。由于TCP是全双工工作的,所以反之亦然。

示例:输入即发送

假如有两台主机A和B,A可以连通B,并且B的IP地址为192.168.1.3。

那么,以下即可实现双向的数据数据发送与接收。

           Client                        Server
+-----------------------------+--------------------------------+
|                             |                                |
|    $ nc 192.168.1.3 6666    |    $ nc -l 192.168.1.3 6666    |
|    hello, I'm client.       |    hello, I'm client.          |
|    hello, I'm server.       |    hello, I'm server.          |
|                             |                                |
+-----------------------------+--------------------------------+

示例:发送文件

使用重定向的方式即可发送/接收文件。

比如,客户端发送文件,服务端直接显示:

1
$ nc localhost 6666 < config.txt

多个连接

nc作为服务端,默认只接收一个连接,如果此连接关闭,则nc也会退出。

如果想要nc接收任意数量的客户端连接,可以加上-k参数。

标签:linux · nc