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 这两个结构体
本质上是一样的内容。
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号