socket的一些結構

來源:互聯網
上載者:User

一.socket的一些基本結構

1.32位的IP地址:

struct in_addr

{

    unsigned long s_addr;

}

2.TCP/IP所在的網際通訊域使用的通訊端地址格式:

struct sockaddr_in

{

    short int sin_family;             //表示所屬地址簇,TCP/IP必須是AF_INET

    unsigned short int sin_port;   //表示連接埠號碼

    struct in_addr sin_addr;       //表示32位的IP地址,用in_addr結構表示

    unsigned char sin_zero[8];   //表示全部填充0,保證和sockaddr大小相同

}

二.socket的一些輔助函數

1.位元組序轉換函式:

·htons : host to network byte order , short (unsigned) integer

   ·htonl : host to network byte order , long (unsigned) integer

   ·ntohs : network to host byte order , short (unsigned) integer

   ·ntohl : network to host byte order , long (unsigned) integer

記憶方法:

    h表示host,n表示network,l表示long,s表示short

例如:

    num = htons(Port_NUM);

    表示將一個名叫Port_NUM的連接埠號碼轉換成網路位元組順序並賦值給num變數

2.IP地址轉換函式:

   ·inet_addr()

     將一個用點分十進位表示的IP地址字串轉換成32位不帶正負號的整數。此整數已經是

      網路位元組順序,無需再調用htonl()

·inet_ntoa()

     將一個32位不帶正負號的整數轉換成一個點分十進位表示的IP地址字串,此函數接受

     一個in_addr結構作為參數,將返回的字串儲存再一個static的緩衝區內,因

     此,下次調用此函數時,將改變上次調用的結果。

3.尋找主機資訊函數:

   struct hostent* gethostbyname(const char *name);

   參數:輸入參數時需要解析的主機名稱,也可以是網域名稱

   傳回值:返回一個描述主機資訊的結構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]    //為向後相容

};

對於TCP/IP協議而言,h_addrtype的值等於AF_INET,h_length的值是4,因為IP地址是4位元組。h_addr_list實質上是一個儲存地址的緩衝區,如果後續的代碼要利用這個緩衝區,需要進行強制類型轉換。

聯繫我們

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