网络通信之大小端、字节序转换函数

在上篇文章中我们提到了UDP,TCP有关函数,并知道了一个重要的结构体struct sockaddr。想要实现通信首先要知道通信端的地址,所以首先了解一下IPv4套接字地址结构体。

//IPv4 套接字地址结构体,用来存放地址信息
struct sockaddr_in    //此结构体大小是16字节
{
   
    sa_family_t sin_family;  //2 字节 协议族(AF_INET、AF_INET6、PF_PACKET)
    in_port_t sin_port;      //2 字节 端口
    struct in_addr sin_addr; //4 字节 地址
    char sin_zero[8]         //8 字节  必须为0
};
struct in_addr
{
   
    in_addr_t s_addr;     //4 字节
};

注意 : 为了使不同格式地址能被传入套接字函数,地址须要强制转换成通用套接字地址结构。

//此结构体大小是16字节,函数参数的类型是此结构体,但其没有表示地址信息的成员变量,
//所以用IPv4结构体定义,强转成这个就可以了。(关键:大小一样)
struct sockaddr  
{
   
    sa_family_t sa_family;    // 2 字节
    char sa_data[14];         //14 字节
};  //通用套接字地址结构体,一般用来强转IPv4结构体

所以现在就是怎样给IPv4结构体赋值的问题了。
例子 :

//定义服务器IPv4地址结构(假设服务器的IP10.0.110.110  port=8080)
struct sockaddr_in server_addr;    //定义变量
//memset(&server_addr,0,sizeof(server_addr));   //清空1
bzero(&server_addr,sizeof(server_addr));     //清空2
//给成员变量赋值
server_addr.sin_family = AF_INET;		
  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值