nc局域网聊天+文件传输(netcat)-飞外

nc的全程是netcat,这个工具非常好用。

有时候我们需要在局域网内传送一些文本消息或者文件的时候,通常的做法是安装一些局域网通讯软件,然后来做。其实不必要这样,使用nc这个小工具就很好了。

nc的一些参数

具体的参数,可以通过nc -help来获取。(注意此处只有一个-)
下面表格中的内容是用google翻译后修改来的,不是很好看,请原谅。
最常用的几个参数就是-l,-u,-p这几个参数。


nc 进行局域网内聊天

因为是局域网,所有这里使用UDP协议还是TCP协议是没多大关系的。
这是很简单的C/S模式,把其中一台机器当做服务器,另一台当做客户端就是了。

对于服务器,使用这个命令nc -l 9999来监听9999端口,默认使用的是TCP协议,可以加-u参数来使用UDP协议。

然后是客户端,客户端使用命令nc 192.168.1.12 9999,这里的IP地址是服务端的IP地址,端口是服务端监听的9999。

下面测试一下。


2.在客户端输入命令,并输入要发送的数据
o@o-pc:~$$ nc 192.168.11.185 9999
输入要发送的数据
这里测试一下,发送数据能不能收到


3.现在去看一下服务端有没有收到数据
fx@fx:~$$ nc -l 9999
这里测试发送能不能收到
看到服务端收到了数据后,输入一条应答数据发送给客户端
收到了数据4.看看客户端收到应答了没有
o@o-pc:~$$ nc 192.168.11.185 9999
这里测试发送能不能收到
收到了数据

可以看到,一个简单局域网聊天工具就这么简单的完成了。

nc 局域网文件传输

这里就不详细的说了。
假设本机上有一个文件a.txt要传送给另一台机器。
传输文件步骤如下

1.在本机上执行命令
nc -l 9999 a.txt2.在接收文件的机器上执行命令
nc 192.168.1.12 9999 a.txt

这个的原理就是和前面局域网聊天的原理是差不多的,区别在与聊天的时候发送的数据来自标准输入,接收的数据写入标准输出。而这里将其重定向到了文件。

压缩传输的数据

虽然是局域网,但有时候要传输的数据是比较大的文本文件,可以有比较大的压缩比的时候,可以压缩传输。(一个几个G的密码字典,可以压缩到几十M)

这时候可以借用tar或者gzip来做压缩。具体操作可以见下面
这里使用的是gzip压缩,也可使用-j等来使用bzip等压缩方式。

1.在本机上执行命令
tar -cz a.txt | nc -l 99992.在接收文件的机器上执行命令
nc 192.168.1.12 9999 | tar -xz

传输目录这个很好办,还是借助归档工具tar来进行。
这里传输的目录结构如下

o@o-pc:~$$ tree book├── APUE.pdf├── C++_STL参考.chm├── C语言参考.pdf├── linux网络编程.pdf├── 或者.txt└── 名著 ├── 百年孤独.txt ├── 红楼梦.txt ├── 三国演义.txt ├── 水浒传.txt └── 西游记.txt1 directory, 10 files

下面来看传输的过程

1.在本机上执行命令
tar -c book |nc -l 99992.在接收文件的机器上执行命令
nc 192.168.1.12 9999 | tar -x
传输多个文件

这个和传输目录的方式是一样的,也是利用tar先打包,再发送。接收端先接收,再解包。
这里传输的文件是APUE.pdf,linux网络编程.pdf,C++_STL参考.chm。

1.在本机上执行命令
tar -c APUE.pdf linux网络编程.pdf C++_STL参考.chm |nc -l 99992.在接收文件的机器上执行命令
nc 192.168.11.38 9999|tar -x