sockaddr与sockaddr_in结构体区别 不同 详解

                                             粉丝不过W

  struct sockaddr struct sockaddr_in 这两个结构体都是用来 处理网络通信的地址

/*
 *此数据结构用做bind、connect、recvfrom、sendto等函数的参数,指明地址信息
 *note:
 *  目标地址和端口信息在一起
 */
#include <sys/socket.h>

struct sockaddr
{
    //地址家族,一般“AF_xxx”的形式,通常使用AF_INET
    unsigned short sa_family;
    // 14字节协议地址,目标地址和端口信息
    char           sa_data[14];
}

 

#include <netinet/in.h>

struct  sockaddr_in 
{
    short int       sin_family;       //协议族
    unsigned short  int  sin_port;    //端口号(使用网络字节顺序)
    struct in_addr  sin_addr;         //IP地址        
    unsigned char   sin_zero[8];      //sockaddr与sockaddr_in 保持大小相同而保留的空字节
};

struct  in_addr 
{
    unsigned  long  s_addr;
};

typedef 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;
} IN_ADDR;

sockaddr_insockaddr并列的结构,指向sockaddr_in的结构体的指针,同样可以 指向sockraddr的结构体,并代替它

struct sockaddr_in mysock;

bind(sockfd,(struct sockaddr *)&mysock,sizeof(struct sockaddr); /* bind的时候进行转化 */

 

全部评论

相关推荐

点赞 评论 收藏
分享
榕城小榕树:1200单休,我去干点啥别的不好
点赞 评论 收藏
分享
Lorn的意义:你这种岗位在中国现在要么牛马天天加班,要么关系户进去好吃好喝,8年时间,真的天翻地覆了,对于资本来说你就说一头体力更好的牛马,哎,退伍没有包分配你真的亏了。
点赞 评论 收藏
分享
06-23 11:43
门头沟学院 Java
allin校招的烤冷...:我靠,今天中午我也是这个hr隔一个星期发消息给我。问的问题还是一模一样的😅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务