nc 局域網聊天+文件傳輸
nc的全程是netcat,這個工具非常好用。
有時候我們需要在局域網內傳送一些文本消息或者文件的時候,通常的做法是安裝一些局域網通訊軟件,然后來做。其實不必要這樣,使用nc這個小工具就很好了。
nc的一些參數
具體的參數,可以通過nc -help來獲取。(注意此處只有一個-)
下面表格中的內容是用google翻譯后修改來的,不是很好看,請原諒。
最常用的幾個參數就是-l,-u,-p這幾個參數。
| 參數 | 說明 |
|---|---|
| -4 | 使用IPv4 |
| -6 | 使用IPv6 |
| -b | 允許廣播 |
| -C | 發送CRLF作為行結束 |
| -D | 啟用套接字調試選項 |
| -d | 從標准輸入分離 |
| -h | 查看幫助信息 |
| -I length | TCP接收緩沖區長度 |
| -i secs | 發送間隔/端口掃描的延時 |
| -j | 使用巨型幀 |
| -k | 保持套接字打開多個連接 |
| -l | 監聽模式,綁定端口,等待連接 |
| -n | 禁止名稱/端口的解析 |
| -O length | TCP發送緩沖區長度 |
| -P proxyuser | 用戶名代理驗證 |
| -p port | 指定用於遠程連接的本地端口 |
| -q secs | quit after EOF on stdin and delay of secs |
| -r | 隨機化遠程端口 |
| -S | 啟用TCP MD5簽名選項 |
| -s addr | 本地源地址 |
| -T toskeyword | 設置IP類型 |
| -t | 應答TELNET協商 |
| -U | 使用UNIX域套接字 |
| -u | UDP模式 |
| -V rtable | 指定備用路由表 |
| -v | 詳細 |
| -w secs | 連接超時時間和最后網絡讀取 |
| -X proto | 代理協議: “4”, “5” (SOCKS) 或 “connect” |
| -x addr[:port] | 指定代理服務器地址端口 |
| -Z | DCCP模式 |
| -z | Zero-I/O 模式 [用於掃描] |
nc 進行局域網內聊天
因為是局域網,所有這里使用UDP協議還是TCP協議是沒多大關系的。
這是很簡單的C/S模式,把其中一台機器當做服務器,另一台當做客戶端就是了。
對於服務器,使用這個命令nc -l 9999來監聽9999端口,默認使用的是TCP協議,可以加-u參數來使用UDP協議。
然后是客戶端,客戶端使用命令nc 192.168.1.12 9999,這里的IP地址是服務端的IP地址,端口是服務端監聽的9999。
下面測試一下。
-
1.在服務端輸入命令
fx@fx:~$ nc -l 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.txt - 2.在接收文件的機器上執行命令
nc 192.168.1.12 9999 > a.txt
這個的原理就是和前面局域網聊天的原理是差不多的,區別在與聊天的時候發送的數據來自標准輸入,接收的數據寫入標准輸出。而這里將其重定向到了文件。
壓縮傳輸的數據
雖然是局域網,但有時候要傳輸的數據是比較大的文本文件,可以有比較大的壓縮比的時候,可以壓縮傳輸。(一個幾個G的密碼字典,可以壓縮到幾十M)
這時候可以借用tar或者gzip來做壓縮。具體操作可以見下面
這里使用的是gzip壓縮,也可使用-j等來使用bzip等壓縮方式。
- 1.在本機上執行命令
tar -cz a.txt | nc -l 9999 - 2.在接收文件的機器上執行命令
nc 192.168.1.12 9999 | tar -xz
傳輸目錄或多個文件
傳輸目錄
傳輸目錄這個很好辦,還是借助歸檔工具tar來進行。
這里傳輸的目錄結構如下
o@o-pc:~$ tree book
book
├── APUE.pdf
├── C++_STL參考.chm
├── C語言參考.pdf
├── linux網絡編程.pdf
├── 或者.txt
└── 名著
├── 百年孤獨.txt
├── 紅樓夢.txt
├── 三國演義.txt
├── 水滸傳.txt
└── 西游記.txt
1 directory, 10 files
下面來看傳輸的過程
- 1.在本機上執行命令
tar -c book |nc -l 9999 - 2.在接收文件的機器上執行命令
nc 192.168.1.12 9999 | tar -x
看一下接收后的情況
fx@fx:~$ nc 192.168.11.38 9999|tar -x
fx@fx:~$ ls -R book
book:
APUE.pdf C++_STL參考.chm C語言參考.pdf linux網絡編程.pdf 或者.txt 名著
book/名著:
百年孤獨.txt 紅樓夢.txt 三國演義.txt 水滸傳.txt 西游記.txt
傳輸多個文件
這個和傳輸目錄的方式是一樣的,也是利用tar先打包,再發送。接收端先接收,再解包。
這里傳輸的文件是 APUE.pdf,linux網絡編程.pdf,C++_STL參考.chm。
- 1.在本機上執行命令
tar -c APUE.pdf linux網絡編程.pdf C++_STL參考.chm |nc -l 9999 - 2.在接收文件的機器上執行命令
nc 192.168.11.38 9999|tar -x
接收成功了之后可以看到傳輸的文件。
