学习笔记《实战Linux Socket编程》第二章

本文详细介绍了Linux Socket编程中涉及的各种地址结构,包括通用套接口地址sockaddr、sockaddr_un(本地套接口)、IPv4套接口地址sockaddr_in、X.25地址sockaddr_x25、IPv6地址sockaddr_in6以及AF_AX25地址。通过实例展示了如何创建和绑定这些不同类型的套接口地址,对于理解Linux Socket编程中的地址处理至关重要。
摘要由CSDN通过智能技术生成
内容介绍:
一、通用套接口地址
#include <sys/socket.h>
struct sockaddr
{
    sa_family_t sa_family;//地址族(无符号的短整数在linux中是两个字节)
    char sa_data[14];      //地址数据
}
通用套接口地址本身没什么用处,但它为其他地址结构提供了一个重要的参考模型

二、sockaddr_un地址结构
#include <sys/un.h>
struct sockaddr_un
{
    sa_family_t sun_family;   //地址族
    char sun_path[108];      //路径名
}
当使用lpr(1)找印文件时,系统实际是在使用本地套接口与找印服务进行通讯,本地套接口也被称为AF_UNIX域,sockaddr_un地址结构对应的就是AF_LOCAL和AF_UNIX地址结构

三、IPv4套接口地址
#include <netinet.h>
struct socket_in
{
    sa_family_t sin_family;   //地址族
    uint16_t  sin_port;       //端口号
    struct in_addr  sin_addr;//Internet地址
    unsigned  sin_zero[8];   //占位字节
}
in_addr包含一个32位无符号整数,sin_zero[8]是不被使用的。
注 : sin_port  sin_addr 都是网络字节序。
什么是网络字节序:
1.小端字节序:是一种将低序字节存储在起始位置的方法(如Intel的CPU)
2.大端字节序:是一种将高序字节存储在起始位置的方法
而网络上的数据的标准是大端字节序,如果Linux系统是在大端字节序的机器上运行,不需要转换字节,只要提供一个简单的宏替换,否则在用下面的函数进行转换:
#include <netinet/in.h>
unsigned long htonl(unsigned long hostlong);
unsigned short htons(unsigned short hostshort);
unsigned long ntohl(unsigned long netlong);
unsigned short ntohs(unsigned short netshort);
这里的短整数是16位,长整数为32位

四、X.25地址
#include <linux/x25.h>
struct sockaddr_x25
{
    sa_family_t sx25_addr[16];//必须是AF_X25
    x25_address sx25_addr;   //X.121地址
}
typedef struct
{
    char x25_addr[16];
}x25_address;
有关信息可参考  x25(4)手册,一个X.25的网络地址(由X.121标准定义)由一串十进制数组成,在sockaddr_x25结构中,主机号不能以空字符结尾

五、AF_INET6
struct sockaddr_in6
{
    sa_family_t  sin6_fam
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值