nc 局域網聊天+文件傳輸(netcat)


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.pdflinux網絡編程.pdfC++_STL參考.chm

  • 1.在本機上執行命令
    tar -c APUE.pdf linux網絡編程.pdf C++_STL參考.chm |nc -l 9999
  • 2.在接收文件的機器上執行命令
    nc 192.168.11.38 9999|tar -x

接收成功了之后可以看到傳輸的文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM