位元組順序

Intel處理器的位元組順序是和DEC VAX處理器的位元組順序一致的。因此它與68000型處理器以及Internet的順序是不同的,所以用戶在使用時要特別小心以保證正確的順序。

簡介

任何從Windows Sockets函式對IP位址和連線埠號的引用和傳送給Windows Sockets函式的IP位址和連線埠號均是按照網路順序組織的,這也包括了sockaddr_in結構這一數據類型中的IP位址域和連線埠域(但不包括sin_family域)。

技術要求

考慮到一個應用程式通常用與“時間”服務對應的連線埠來和伺服器連線,而伺服器提供某種機制來通知用戶使用另一連線埠。因此getservbyname()函式返回的連線埠號已經是網路順序了,可以直接用來組成一個地址,而不需要進行轉換。然而如果用戶輸入一個數,而且指定使用這一連線埠號,應用程式則必須在使用它建立地址以前,把它從主機順序轉換成網路順序(使用htons()函式)。相應地,如果應用程式希望顯示包含於某一地址中的連線埠號(例如從getpeername()函式中返回的),這一連線埠號就必須在被顯示前從網路順序轉換到主機順序(使用ntohs()函式)。
由於Intel處理器和Internet的位元組順序是不同的,上述的轉換是無法避免的,應用程式的編寫者應該使用作為Windows Sockets API一部分的標準的轉換函式,而不要使用自己的轉換函式代碼。因為將來的Windows Sockets實現有可能在主機位元組順序與網路位元組順序相同的機器上運行。因此只有使用標準的轉換函式的應用程式是可移植的。

熱門詞條

聯絡我們