网络编程 sockaddr_in , sockaddr , in_addr区别

阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。希望互相进步谢谢!!

网络编程 - sockaddr_in , sockaddr , in_addr区别

  1. 三者都是表示网络地址的结构体
    sockaddr
    sockaddr_in
    in_addr

  2. 区别
    sockaddr是通用的socket地址结构体
    sockaddr_in是Internet 和socket通用的地址结构体
    in_addr就是32位IP地址
    inet_addr()是将一个点分制的IP地址(如192.168.0.1)转换为上述 结构中需要的32位IP地址(0xC0A80001)
    (二者可以进行类型转换)

    struct sockaddr和struct sockaddr_in这两个结构体用来处理网络通信的地址。
    在各种系统调用或者函数中,只要和网络地址打交道,就得用到这两个结构体。
    网络中的地址包含3个方面的属性:
    1 地址类型: ipv4还是ipv6
    2 ip地址
    3 端口

下面展示一些 内联代码片

struct sockaddr {
        u_short sa_family;              /* address family */
        char    sa_data[14];            /* up to 14 bytes of direct address */
};

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

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;

码字不易,谢谢点赞!!!
码字不易,谢谢点赞!!!
码字不易,谢谢点赞!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值