Linux網路程式設計(一)基礎

2021-07-03 11:22:50 字數 1909 閱讀 3447

一、資料儲存順序:大端和小端

大端模式: 位址的增長順序與值的增長順序相反

小段模式: 位址的增長順序與值的增長順序相同

為什麼會有大小端模式之分呢?這是因為在計算機系統中,我們是以位元組為單位的,每個位址單元都對應著乙個位元組,乙個位元組為8bit。但是在c語言中除了8bit的char之外,還有16bit的short型,32bit的long型(要看具體的編譯器),另外,對於位數大於8位的處理器,例如16位或者32位的處理器,由於暫存器寬度大於乙個位元組,那麼必然存在著乙個如果將多個位元組安排的問題。

我們常用的x86結構是小端模式,而keil c51則為大端模式。很多的arm,dsp都為小端模式。有些arm處理器還可以由硬體來選擇是大端模式還是小端模式。所以,主機位元組順序是小端模式。網路位元組順序是大端模式。

在c語言中,不同於結構體,共用體(聯合體)中的幾種不同型別的變數存放在同一段記憶體單元中。利用這一特點,可以用聯合體變數判斷arm或x86環境下,儲存系統是是大端還是小端模式。

#include "stdio.h"

int main()

c;c.a=1;

if (c.b==1)

printf("it is little_endian!\n");

else

printf("it is big_endian!\n");

return 1;

}

說明:

1 若是小端模式,由低位址到高位址c.a存放為0x01 00 00 00,c.b被賦值為0x01;

————————————————————————————

位址 0x00000000 0x00000001 0x00000002 0x00000003

c.a 01                  00                00                00

c.b 01                  

————————————————————————————

2 若是大端模式,由低位址到高位址c.a存放為0x00 00 00 01,c.b被賦值為0x0;

————————————————————————————

位址 0x00000000 0x00000001 0x00000002 0x00000003

c.a 00                 00                 00                 01

c.b 00                  

————————————————————————————

位元組序的處理

因為存在大端小端的問題,所以就要進行統一的轉換。

注意字串是不用轉換的,因為乙個字元正好佔一位元組。儲存順序不影響值。而浮點數也不用轉換,因為浮點數的讀取規則是在cpu中定義的,是一致的。

轉換所用的函式為:

htons(),htonl();         主機轉為網路位元組序,s為short , l為long

ntohs(),ntohl();         網路轉為主機位元組序。

二、位址格式的轉換

通常情況下,都是用點分十進位制(如:202.134.23.145)來表示ip位址。是個字串。但是程式中處理時用到的是乙個二進位制的值。所以要進行轉換。

具體的有四個函式:

#include#include#includeint main()
執行結果:

[localhost 400]$ ./addr

inet_addr:0xb2d26ca

inet_network:0xca262d0b

inet_ntoa:202.30.45.11

inet_aton:0xb2d26ca

[localhost 400]$

linux網路程式設計基礎(一)

一 資料儲存順序 大端和小端 高位位元組儲存高位元組稱為小端模式,通常都計算機採用這個模式儲存。而網路則採用大端傳輸。所以需要轉換 面試有時會出這麼個題 寫乙個程式判斷程式的儲存是大端還是小端?程式的原理見下圖 include includeunion wordc int check int mai...

Linux網路程式設計基礎 一

1 怎樣完成網路程式設計 伺服器 提供資料的為伺服器 客戶端 獲取資料的為客戶端 2 協議的選擇 tcp 面向連線,可靠的流式服務 udp 無連線的,不可靠的,資料報服務 3 tcp的程式設計流程 sever 伺服器端 建立socket include include int socket int ...

linux網路程式設計基礎 網路基礎

客戶機 client 伺服器 server 模式。需要在通訊兩端各自部署客戶機和伺服器來完成資料通訊。瀏覽器 browser 伺服器 server 模式。只需在一端部署伺服器,而另外一端使用每台pc都預設配置的瀏覽器即可完成資料的傳輸。c s模式 優點缺點 資料快取本地,效率高 工作量大,開發周期更...