Socket學習筆記二 本機與網路位元組順序的轉換

2021-06-17 16:03:53 字數 1042 閱讀 2186

各個使用者的硬體可能是不同的

, 不同的機器對資料儲存時其位元組順序是不一樣的

, 那麼硬體已經決定了資料的存放結構不一樣,為了保證各個硬體之間能夠正確交換資料,

所有在網路上傳播的資料就應該是同樣的儲存結構

, 各個硬體都提供對應本機器的轉換函式.

假設又這樣兩台機器,分別名為a,

b;對於乙個整數4,再

a,b機器種儲存的結構分別是

a ---- 0000 0100

b ---- 0100 0000

當然,這個假設不一定正確,僅僅為了說明問題.

按照我們所學,

a機器的儲存方式應該是正統的和正確的。但是沒有人可以說

b機器儲存的不對,因為它自己會把

0100 0000

轉換成0000 0100

來計算的。

既然各種機器可能有各自不同儲存資料的方式,當

a機器的

0000 0100

傳遞給b

機器的時候,

b機器一定會得到乙個錯誤的值。顯而容見,

b機器會吧

0000 0100

計算成64

而不是4

,這違背了

a機器的意願。

所以約定了再網路種傳輸的時候,所有的機器用同一種傳輸方式,也就是說資料的位元組順序大家都使用一樣的順序。如果說所有的廠商規定了都使用

a機器的方式(稱為網路位元組順序),那麼

b機器必須提供乙個函式,吧本機的儲存結構轉換成網路位元組順序傳遞出去,

b機器收資料的時候也應該提供乙個函式吧網路位元組順序的資料轉換成本機能夠識別的結構。

這兩個函式分別是

htonl()------ host to network long

型的資料

ltohl()------ network to host long

型的資料

當然就有

htons() ntohs()

的函式,

這套函式由各個自己自己實現,所以實現肯定是不一樣的,但是對外提供的介面是一樣的。

Java 網路程式設計 學習筆記二 Socket 用法

一 構造 socket socket 構造socket 物件,但不建立連線,需要用 bind socketaddress 繫結到本地位址,再呼叫 connect socketaddress 與遠端主機建立連線。以下構造方法均建立與遠端主機的連線 socket inetaddress address,...

機器學習 支援向量機SVM學習筆記二

這個問題等價於 為了方便求解,我在這裡加上了平方,還有乙個係數,顯然這兩個問題是等價的值 min12 w 2 s.t.yi wtxi b 1,i 1,n很明顯,我們已經將原來的目標函式轉換為了乙個凸函式問題,可以用任何現成的 qp quadratic programming 的優化包進行求解。然而求...

工控機與筆記本通訊 ssh 登陸

遇到的問題 1.工控自身連上的無線網訊號較弱且易斷,故買了無線網絡卡連通wifi。2.筆記本與工控機自動連上的無線網不在乙個區域網內,無法進行遠端登入 ssh登入 3.配置同乙個區域網內的ip之後,能上外網,能ping通閘道器但是無法ping通互相的ip位址 在這裡卡住了 解決辦法 很簡單,以前簡直...