sockaddr_in 與 in_addr的區別


struct sockaddr_in {
short int sin_family; /* 地址族 */
unsigned short int sin_port; /* 端口號 */
struct in_addr sin_addr; /* Internet地址 */
unsigned char sin_zero[8]; /* 與struct sockaddr一樣的長度 */
};


struct in_addr就是32位IP地址。
struct in_addr {
unsigned long s_addr;
};

所以 sin_addr 就是結構體 in_addr, 里面包含s_addr這32位IP地址


1、 inet_addr、 inet_ntoa inet_aton

a、inet_addr()的作用,就是將inet_addr()轉化為長整數
inet_addr()的功能是將一個點分十進制的IP轉換成一個長整數型數(u_long類型)等同於inet_addr(),
主要將一個點間隔地址轉換成一個in_addr。 方便賦值給 in_addr

b、inet_ntoa 主要是將 sin_addr的這32位整數轉換成"."點隔的字符串格式
inet_ntoa(sin_addr)


c、inet_aton 跟 inet_ntoa 的相反, 主要是將點隔的字符串轉換為sin_addr這個結構體的內容


inet_addr 與 inet_aton、inet_ntoa的主要區別是 inet_addr 直接賦值給s_addr, 而inet_ntoa針對的是struct in_addr這個結構體

 

 

http://www.cnblogs.com/hnrainll/archive/2011/07/18/2109375.html
該網址區分struct sockaddr 與 struct sockaddr_in 這兩個結構體
本質上是一樣的內容。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM