tcp/ip協議規定,網路資料必須採用大端位元組序,即低位址高位元組
大端:低位址存到高位,高位址存到低位
小端:低位址存到低位,高位址存到高位
為了使網路具有可移植性,使同樣的c**在大端小端計算機上編譯後都能正確執行,可以呼叫以下函式做網路位元組序和主機位元組序的轉換
h表示host ,n表示netwok ,l表示32位長整數 ,s表示16位短整數。
如果主機是小端位元組序,這些函式將引數做相應的大小端之後然後返回,如果主機是大端位元組序,這些函式不做轉換,將引數原封不動的返回。
早期:
現在:
轉化形式:
struct sockaddr 很多網路程式設計函式誕生早於ipv4協議,所以使用的都是sockaddr結構體,為了向前相容,現在sockaddr向前退化成(void *)的作用,傳遞乙個位址給函式,至於這個函式是sockaddr_in還是sockaddr_in6,由位址族確定,然後函式內部再強制型別轉化為所需的型別。
使用 sudo grep -r 「struct sockaddr_in{」 /usr 命令可以看到struct sockaddr_in結構體的定義,一般預設儲存位置,/usr/include/linux/in.**件中
Linux網路程式設計基礎 三
完整的讀寫函式 一旦我們建立了連線,我們的下一步就是進行通訊了.在linux下面把我們前面建立的通道 看成是檔案描述符,這樣伺服器端和客戶端進行通訊時候,只要往檔案描述符裡面讀寫東西了.就象我們往檔案讀寫一樣.1 寫函式write ssize t write int fd,const void bu...
網路程式設計 網路基礎
1.物理層 提供建立 維護和拆除物理鏈路所需的機械 電氣 功能和規程的特性 提供有關在傳輸介質上傳輸非結構的位流及物理鏈路故障檢測指示。在這一層,資料還沒有被組織,僅作為原始的位流或電氣電壓處理,單位是位元。常用協議 eia tia rs 232 eia tia rs 449 v.35 rj 45 ...
linux網路程式設計基礎 網路基礎
客戶機 client 伺服器 server 模式。需要在通訊兩端各自部署客戶機和伺服器來完成資料通訊。瀏覽器 browser 伺服器 server 模式。只需在一端部署伺服器,而另外一端使用每台pc都預設配置的瀏覽器即可完成資料的傳輸。c s模式 優點缺點 資料快取本地,效率高 工作量大,開發周期更...