寫久了web倦了,第n次開始嘗試網絡開發,於是熟悉一下常用工具。
嘗試了一下netcat來測試服務器,或者充當客戶端都異常好用。於是記錄一下常用的一下命令
1. 充當服務器,或者客戶端進行訪問
通過nc建立一台服務器用於監聽端口:
nc -l 9999
此時nc處於了監聽狀態, 我們可以開啟一台客戶端來訪問對應接口
nc 127.0.0.1 9999
然后現在客戶端向服務器發起了鏈接,嘗試在鏈接中的客戶端隨便輸入一些信息
Hello World...
可以在服務器端看到,服務器會直接輸出這些信息到控制台。
2. 傳輸文件
首先要確保你和目標地址能夠建立起連接,比如是在同一個局域網內,或者可以ip地址直接訪問的雲主機之類
在服務器端,我們開啟一個服務器對一個端口進行監聽,並且將輸出的信息重定向到一個目標文件
nc -l 9999 > target_file
然后客戶端找到要傳輸的文件
cat source_file | nc localhost 9999
傳輸完成之后,就可以看到服務器自動停止了。然后去找下目標文件 就已經在那里了,這個方法在局域網內傳文件太方便啦。
3. 客戶端超時控制
客戶端超時控制 是增加一個-w選項例:
nc -w 10 localhost 9999
這里注意,在10秒內沒有任何操作就會被自動斷開,但是在10秒內你做了任何操作,都可以再續10秒。
4. 強制netcat服務器端保持啟動狀態:
如果跟着做了上面實驗的話就會發現一個問題,當客戶端推出之后,服務器端也會立即跟着退出。除了那個文件傳輸的例子以外我們不希望任何一個服務器會在客戶端退出之后就立即結束服務,所以我們需要讓服務器一直保持服務。
nc -k -l 9999
5. 使用netcat處理udp
Netcat在使用-l啟動服務器或者發起客戶端連接的時候默認使用了tcp協議,但是使用-u參數可以讓他使用udp來發起連接
nc -u -l 9999 //使用udp來啟動服務器
nc -u localhost 9999 //使用udp來訪問服務器
另外在早些時候的版本,或者某個rewrite版本里面還有一個-e參數,用於將訪問重定向到某個目標機器的應用,這么邪惡的東西我man 了一下我的nc沒有發現。可能需要另外開坑的時候去玩玩看。目前來看測試服務器的話上面的功能就夠用了,訪問具體url的時候 還可以借助curl來玩。linux世界的工具真是強大啊。!
Reference:
https://www.oschina.net/question/12_50469?sort=default&p=3 8 個實用的 Linux netcat 命令示例