通常使用的有兩種資料型別:短型(兩個位元組)和長型(四個位元組)。
下面介紹的這些轉換函式對於這兩類的無符號整型變數都可以正確的轉換。
如果你想將乙個短型資料從主機位元組順序轉換到網路位元組順序的話,有這樣乙個函式htnos:
它是以"h」開頭的,代表「主機」;
緊跟著它的是"to",代表「轉換到」;
然後是"n",代表「網路」;
最後是"s",代表「短型資料」。
你可以使用"n", "h", "to", "s", "l"的任意組合。當然,你要在可能的情況下進行組合。比如,系統是沒有stolh()函式的(short to long host ?)。
下面給出套接字位元組轉換程式的列表:
hotns()——"host to network short",主機位元組順序轉換為網路位元組順序(對無符號短型進行操作 4bytes)
htonl()——"host to network long",主機位元組順序轉換為網路位元組順序(對無符號長型進行操作 8bytes)
ntons()——"network to host short",網路位元組序轉換為主機位元組順序(對無符號短型進行操作 4bytes)
ntohl()——"network to host long",網路位元組順序轉換為主機位元組順序(對無符號長型進行操作 8bytes)
例如:*.sin_addr.s_addr = htonl(innaddr_any)是什麼意思?
*.sin_addr.s_addr = htonl(innaddr_any)是socket程式設計中用到的。
*是任意定義的乙個sockaddr_in型的結構體物件sin_addr是他的乙個屬性,用於定義ip位址,是strcut in_addr型的,s_addr為結構體in_addr的物件,簡單說就是三個結構體巢狀包裝的乙個包。
inaddr_any一般為核心指定的,大多數系統取0,表示任意的ip位址。
htonl()簡單說是把乙個本機ip轉化為網路協議中規定的格式的函式,也就是所謂的大端模式或小端模式。
htons函式是將乙個u_short型別的值從主機位元組順序轉換為tcp/ip的網路位元組順序,原型宣告如下:
u_short htons(u_short hostshort);
htonl函式是將乙個u_long的值從主機位元組順序轉換為tcp/ip的網路位元組順序,原型宣告如下:
u_long htonl(u_long hostlong);
位元組序和網路平台有關,不同的平台,位元組序不同。(位元組序顧名思義——位元組的排列順序)只有多於乙個位元組的資料型別,才有位元組序的問題,比如short或者int型別。char是沒有這個問題的。位元組序就是在硬體裡面,一般實在記憶體裡,如何表示儲存和表示這些資料型別。如果高位元組放到高位址上,就是大端(big endian),如果高位元組放到低位址上,就是小端模式(little endian)。
,不管主機位元組序是什麼,往網路上傳送前,都轉換成網路位元組序,也就是用htons或htonl;而從網路收到的資料,不管主機是什麼位元組序,都轉換成主機位元組序,也就是ntohs或者額ntohl。按照這個規則,一般來說,不會出什麼問題了。
分類器的兩類形式
在對gan進行學習的過程中參考了一些好的文章,在此總結出來自己認為有意義的學習筆記。參考原文 一 決策函式y f x 輸入乙個x,它就輸出乙個y,y與乙個閾值比較,根據比較結果判定x屬於哪個類別。例如兩類 w1和w2 分類問題,如果y大於閾值,x就屬於類w1,如果小於閾值就屬於類w2。二 條件概率分...
假設檢驗的兩類錯誤
棄真錯誤也叫第i類錯誤或 錯誤 它是指 原假設實際上是真的,但通過樣本估計總體後,拒絕了原假設。明顯這是錯誤的,我們拒絕了真實的原假設,所以叫棄真錯誤,這個錯誤的概率我們記為 這個值也是顯著性水平,在假設檢驗之前我們會規定這個概率的大小。取偽錯誤也叫第ii類錯誤或 錯誤 它是指 原假設實際上假的,但...
IGP和EGP這兩類協議的主要區別是什麼
igp 內部閘道器協議 interior gateway protocol 內部閘道器協議 igp 是一種專用於乙個自治網路系統 比如 某個當地社群範圍內的乙個自治網路系統 中閘道器間交換資料流轉通道資訊的協議。網路ip協議或者其他的網路協議常常通過這些通道資訊來決斷怎樣傳送資料流。目前最常用的內部...