socket編程基礎1——hostent、in_addr、gethostbyname、inet_ntoa

來源:互聯網
上載者:User

標籤:字元   www   bsp   char   失敗   baidu   union   位元   net   

1. struct hostent結構體  
struct hostent {    char *h_name;    char **h_aliases;    int h_addrtype;    int h_length;    char **h_addr_list;    #define h_addr h_addr_list[0] }; 

  h_name         地址的正式名稱。 
  h_aliases       預備名稱(別名)的指標。 
  h_addrtype    地址類型; 通常是AF_INET。  
  h_length        地址的位元長度。 
  h_addr_list    主機網路地址指標。網路位元組順序。 
  h_addr           h_addr_list中的第一地址。

2. in_addr結構體

 

#include <arpa/inet.h>typedef struct in_addr {          union {                  struct { UCHAR s_b1,s_b2,s_b3,s_b4; } S_un_b;                  struct { USHORT s_w1,s_w2; } S_un_w;                  ULONG S_addr;          } S_un;  #define s_addr  S_un.S_addr        /* can be used for most tcp & ip code */  #define s_host  S_un.S_un_b.s_b2    // host on imp  #define s_net   S_un.S_un_b.s_b1    // network  #define s_imp   S_un.S_un_w.s_w2    // imp  #define s_impno S_un.S_un_b.s_b4    // imp #  #define s_lh    S_un.S_un_b.s_b3    // logical host  } IN_ADDR, *PIN_ADDR, FAR *LPIN_ADDR;

 

3. gethostbyname()函數
#include <netdb.h>#include <sys/socket.h>struct hostent *gethostbyname(const char *name);

  此函數調用入參為主機名稱或者網域名稱,例如www.google.com,wpc等等。函數返回一個指向struct hostent結構類型的指標,如果調用失敗,就返回一個NULL。

返回的struct  hostent結構體中的h_addr_list是一個指標數組,數組中的每個元素可以看作是指向in_addr型的指標。之所以定義為char**,是因為hostent結構支援

多種地址類型。

  通過gethostbyname("www.baidu.com")得到hostent之後可以列印出如下內容:

host->h_addr_list[0][0] = 14host->h_addr_list[0][1] = 215host->h_addr_list[0][2] = 177host->h_addr_list[0][3] = 37 
4. inet_ntoa ()函數
#include <arpa/inet.h>char *inet_ntoa (struct in_addr);

  函數的功能是將網路位元組序的地址轉化為帶“.”格式的IP地址字串。

socket編程基礎1——hostent、in_addr、gethostbyname、inet_ntoa

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.