IOS開發之查看網路連結是否可用—–第二講

來源:互聯網
上載者:User

struct sockaddr_in {
__uint8_t
sin_len;
sa_family_t
sin_family;
in_port_t
sin_port;
struct in_addr  sin_addr;
char        sin_zero[8];
};

    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 {  unsigned short sa_family;     char sa_data[14]; };  sa_family是地址家族,一般都是“AF_xxx”的形式。通常大多用的是都是AF_INET,代表TCP/IP協議族。  sa_data是14位元組協議地址。  這個資料結構用做bind、connect、recvfrom、sendto等函數的參數,指明地址資訊。但一般編程中並不直接針對此資料結構操作,而是使用另一個與sockaddr等價的資料結構,就是我們上面提到的sockaddr_in;

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

typedef struct in_addr {
  union{
   struct {     unsigned char s_b1,s_b2,s_b3,s_b4;  } S_un_b;
  struct {     unsigned short s_w1,s_w2;                    } S_un_w;
   struct {     unsigned long S_addr;                            } 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





相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.