IOS開發之檢視網路鏈結是否可用 第二講

2021-06-07 02:42:43 字數 1204 閱讀 7499

struct sockaddr_in ;

sin_family指代協議族,在socket程式設計中只能是af_inet

sin_port儲存埠號(使用網路位元組順序)

sin_addr儲存ip位址,使用in_addr這個資料結構

sin_zero是為了讓sockaddr與sockaddr_in兩個資料結構保持大小相同而保留的空位元組。

sin_addr按照網路位元組順序儲存ip位址

sockaddr_in和sockaddr是並列的結構,指向sockaddr_in的結構體的指標也可以指向sockaddr的結構體,並代替它。也就是說,你可以使用sockaddr_in建立你所需要的資訊,然後用進行型別轉換就可以了

bzero((char*)&mysock,sizeof(mysock));//初始化

sockaddr_in mysock;

bzero((char*)&mysock,sizeof(mysock));

mysock.sa_family=af_inet;

mysock.sin_port=htons(1234);//1234是埠號

mysock.sin_addr.s_addr=inet_addr("192.168.0.1");

上面我們提到sockaddr,現在我也簡單的說一下

struct sockaddr ;  sa_family是位址家族,一般都是「af_***」的形式。通常大多用的是都是af_inet,代表tcp/ip協議族。  sa_data是14位元組協議位址。  這個資料結構用做bind、connect、recvfrom、sendto等函式的引數,指明位址資訊。但一般程式設計中並不直接針對此資料結構操作,而是使用另乙個與sockaddr等價的資料結構,就是我們上面提到的sockaddr_in;

上面我們還提到了乙個資料結構struct in_addr  sin_addr,這裡也簡單的介紹一下

typedef struct in_addr s_un_b;

struct s_un_w;

struct s_un;

} in_addr;

結構體in_addr 用來表示乙個32位的ipv4位址.

in_addr_t 一般為 32位的unsigned long.

其中每8位代表乙個ip位址位中的乙個數值.

例如192.168.3.144記為0xc0a80390,其中b1 為192 ,b2 為 168, b3 為 3 , b4 為 144

IOS開發之檢視網路鏈結是否可用

在ios開發中我們經常用到網路,網路是不可或缺的,有網路連線和沒有網路連線的時候進行不同的處理,斷點續傳等等都離不開網路檢測。今天我自己簡單的做了乙個demo,用乙個函式封裝網路檢測 bool networki istence bool flagsreachable flags kscnetwork...

IOS開發之 網路應用

nsdata foundation nsurl nsurlrequest nsurlconeection nsnetservice nsnetservicebrowser core foundation cfnetwork cfnetservice bsd sockets 1 獲取 nsdata d...

ios開發之網路基礎

1 網路訪問的步驟 1 建立nsurl 2 建立nsurlrequest 3 建立nsurlconnection 4 開始連線 1 void viewdidload 2 5 通過 nsurlconnectiondatadelegate方法處理網路請求的資料 1 伺服器響應,表示伺服器處理完成請求,準...