1. 程式人生 > >通過shell終端直接開啟socket檔案進行TCP、UDP通訊

通過shell終端直接開啟socket檔案進行TCP、UDP通訊

linux中有一個特殊的檔案/dev/tcp,開啟這個檔案就類似於發出了一個socket呼叫,建立一個socket連線,讀寫這個檔案就相當於在這個socket連線中傳輸資料。

  1. 開啟/dev/tcp
    以讀寫方式開啟/dev/tcp,並指定伺服器名為: www.csdn.net,埠號為:80,指定描述符為8
exec 8<>/dev/tcp/www.csdn.net/80

命令解讀:
exec表示執行該命令;8是使用者指定的檔案描述符;<>應該被拆開為<>理解,表示讀和寫,即以RW的形式開啟,開啟裝置為/dev/tcp/$DEST/80,這裡選擇埠為80,因為希望傳送HTTP請求,因此針對埠80。

注意:/dev/tcp本身是不存在的,無法在/dev下看到這個裝置節點。

  • 實際上,這個裝置節點不存在於系統中,在bash中通過開啟/dev/tcp來取得socket的功能實際上是bash的特性,並不是系統的功能。
  1. 向檔案中寫入資料
    向檔案中隨便寫一些資料: echo -e “GET”>&8
echo -e "GET">&FD

解析:echo -e是以某種格式發出去(忘了-e是代表二進位制還是ASCII了);>&表示流的流向,表示向哪個fd寫入,其中&的作用是區分>的大於號意義,>比較大小而>&表示流的定向。

  1. 讀檔案
    讀取返回的資訊:cat<&8;如果HTTP請求被迴應,這個時候應該能夠讀出一點<html>xxxx</html>
    出來。
  • Attention
    有些版本的bash可能預設不支援對/dev/tcp的開啟。此時可以在編譯bash的時候增加一個引數:--enable-net-redirections然後重新編譯bash即可。

相關推薦

通過shell終端直接開啟socket檔案進行TCPUDP通訊

linux中有一個特殊的檔案/dev/tcp,開啟這個檔案就類似於發出了一個socket呼叫,建立一個socket連線,讀寫這個檔案就相當於在這個socket連線中傳輸資料。 開啟/dev/tcp 以讀寫方式開啟/dev/tcp,並指定伺服器名為: www.c

VC++使用socket進行TCPUDP通信實例總結

數據包 面向 類型 cep ip地址 定義 protocol htm blog 1. 兩臺計算機通信需要協議,通信的兩臺計算機IP必須唯一 2. 同一個計算機可以進行多個應用程序與其他計算機通信,IP地址唯一,而端口號是區別同一計算機(同一IP)

Android程序間通訊 - Socket使用(TCPUDP

在使用Socket實現程序間通訊前,先對網路協議相關知識進行簡單回顧。 網路分層 一般情況會將網路分為5層: 應用層     常見協議:HTTP、FTP、POP3等 傳輸層     

推薦一些socket工具,TCPUDP除錯抓包工具

 還記得我在很久很久以前和大家推薦的Fiddler和Charles debugger麼?他們都是HTTP的神器級除錯工具,非常非常的好用。好工具能讓你事半功倍,基本上,我是屬於徹頭徹尾的工具控。   假如有一天,你寫“傳統”的PHP有些累了,想玩玩socket了,搞搞p

socket程式設計(TCPUDP

Linux下的Socket程式設計大體上包括Tcp Socket、Udp Socket即Raw Socket這三種,其中TCP和UDP方式的Socket程式設計用於編寫應用層的socket程式,是我們用得比較多的,而Raw Socket則用得相對較少,不在本文介紹範圍之列

微信QQ通過分享連結直接開啟APP問題

需求:通過分享連結開啟APP並定位到分享的頁面   x5瀏覽器可能有URL scheme白名單, 1、第三方瀏覽器和應用(除了騰訊)開啟APP普遍方法是通過 URL scheme 直接開啟APP。“app://abc”.   自己其他應用可以相互喚醒,並定位到

Tensorflow例項2:將影象和標籤資料(*.csv)轉化成tfrecords檔案,以便後續直接讀取tfrecords檔案進行圖片驗證碼識別訓練

由於多張影象和標籤值不在一起,現在此方法是把captcha_dir = "../data/GenPics/"此路徑下的圖片與此路徑下的.csv檔案合併起來,通過writer = tf.python_io.TFRecordWriter(path="./data/captcha.tfreco

idea中通過java程式直接呼叫python檔案

專案用python開發時大量引入了外包,當需要在java中使用該程式碼時考慮要麼轉成java語言(太麻煩),要麼打包成jar(沒找到合適的方法),參考了一些java呼叫python檔案方法,並不適合我目前開發的環境,下面給出idea下直接呼叫的方法。 一、在i

Q-Dir取消直接開啟zip檔案,採用系統預設程式開啟zip檔案

Q-Dir取消直接開啟zip檔案,採用系統預設程式開啟zip檔案 在使用Q-Dir的過程中,由於Q-Dir的預設設定,是直接在視窗中開啟zip格式的檔案,而不是用系統預設的程式比如7-Zip開啟,使用上很不方便,但是由於Q-Dir的設定不是很直觀,所以很難找到修改方法,通過Googl

Eclipse直接開啟檔案/資料夾所在的本地目錄

1.Eclipse原生的檔案瀏覽操作        選擇專案目錄/檔案 按 ALT+SHIFT +W ,      會彈出選單點選 System Explorer 就可以開啟檔案所在的本地目錄了;      個人覺得還是快捷鍵使用較為習慣。 2.設定工具目錄 Run -

wps直接開啟CVS檔案會把長串數字訂單號最後4位變為0

WPS開啟CVS檔案,發現裡面的長串數字訂單號後4位全變成0了,而且是以科學計數法來顯示了 上網查了下,不能直接開啟,得先在WPS(OFFICE中也一樣)中新建一個空白表格,然後用選單裡的資料匯入功能, 匯入CVS,以,分隔,再選擇文字格式的就

如何將PDF檔案進行合併分割

 想要將PDF檔案進行合併的話我們需要如何去進行操作?小夥伴們知道有什麼方法可以去進行,相信看到小編這個問題之後小夥伴們都不知道如何去進行操作,小編就向你們簡單介紹一下如何利用迅捷PDF轉化器去將PDF檔案進行檔案的合併和分割!   第一步:首先我們將迅捷PDF轉換器進行

VC開啟瀏覽檔案對話方塊瀏覽資料夾對話方塊

今天,又看了這些東西,在VC裡面建立瀏覽檔案對話方塊比建立瀏覽資料夾對話方塊要簡單一些。 一、建立“瀏覽檔案對話方塊”         用CFileDialog類實現,比如:      CFileDialog  FDlg(TRUE , ".doc" , NULL , OF

Linux tar命令總結:Linux下對檔案進行打包壓縮並分割成指定大小

1、普通tar壓縮命令tar -zcvf andywang.tar.gz andywang//將andywang資料夾壓縮成andywang.tar.gz2、壓縮後的檔案太大,需要將andywang.tar.gz分割成N個指定大小的檔案split -b 4000M -d -a

通過LDAP在AD域控上進行新增刪除修改查詢等各種操作

LDAP操作程式碼樣例  初始化LDAP 目錄服務上下文  該例子中,我們使用uid=linly,ou=People,dc=jsoso,dc=net這個賬號,連結位於本機8389埠的LDAP伺服器(ldap://localhost:8389),認證方式採用simple型別,即使用者名稱/密碼方式。  priv

Linux終端下或Vim下進行拷貝貼上的快捷鍵組合鍵

在linux終端、控制檯中,我們常常需要使用拷貝、貼上功能,但是由於Ctrl+C被連結到了鍵盤訊號,因此簡單的Ctrl+C/Ctrl+V將不能使用,因此需要使用其它的拷貝貼上方法。 注意:在vim中優先使用vim自帶的拷貝貼上命令 拷貝快捷鍵:Ctrl+In

php 通過ssh2協議用sftp實現檔案上傳下載

伺服器的連線 $connection=ssh2_connect($host, $port); if( ssh2_auth_pubkey_file($connection, $send_account,

TCPUDPHTTPSOCKET之間的區別

安全 其他 出錯 tcp、udp 應用程序 網絡層 傳輸協議 客戶端 連接 IP:網絡層協議; TCP和UDP:傳輸層協議; HTTP:應用層協議; SOCKET:TCP/IP網絡的API。 TCP/IP代表傳輸控制協議/網際協議,指的是一系列協議。 TCP和UDP使用IP

python網絡編程,通過服務名稱和會話類型(tcpudp)獲取端口號,簡單的異常處理

one span try num python網絡 int 代碼 sys.argv 通過 作為一個php程序員,同時有對網絡方面感興趣,php就比較蛋疼了,所以就抽了些時間看python 之前學python基礎因為工作原因,斷斷續續的看了個基礎,差不多是可以寫代碼了 最近在

網絡編程1 網絡開發基礎(SocketTCPUDP)

交換網絡 網絡通信 astar 處理 comm list 鏈路層 acc turn OSI七層網絡模型 1.網絡的七層結構:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。 2.在網絡通信的發送端,其通信數據每到一個通信層,都會被該層協議在數據中添加一個包頭數據