sockaddr_in

 
 
某个群中看到了一个问题。
"sockaddr_in和SOCKADDR_IN有什么区别  我看他们的数据结构都一样的 为什么要分呢"

"(sockaddr*)&svrAddr这个是什么写法  为什么要加括号"

 

第一个问题 “ms 十分渴望有自己的数据形式呗” (Just for fun!)
第二个问题。 是关于协议族的。


socket(套接字)源于伯克利, 支持丰富的协议族。 IP protocol family ,Amateur Radio Novell Internet Protocol。。。。 每个协议族都有其地址描述。  sockaddr为通用型地址

struct sockaddr {
    unsigned short sa_family;
    char           sa_data[14];
};


由于条件的限制大都数人经常接触的是 IP协议族。 sockaddr_in为IP族的地址。也就是把sa_data[14] 写成IP族特定的形式。

struct sockaddr_in{
    short            sin_family;
    unsigned short      sin_port;
    struct   in_addr      sin_addr;
    char               sin_zero[8];
};

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;
               unsigned long  S_addr;
     } S_un;
};


(sockaddr*)&svrAddr 是地址形式的转化, 因为套接字各种接口传递地址是统一的sockaddr。
至于SOCKADDR_IN 之流 , 是ms对伯克利的typedef。

 

就写这些了。 不然错误又要一大堆了。 想再说上几句。 国人写的书向来不负责任, 就像上面的问题那样, 用用这个用用那个, 代码一帖完事,让读者莫名其妙。 网上的文章不可尽信,断章取义居多。 

 

over。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值