[Linux网络编程学习笔记]套接字地址结构
2011-05-26 22:49
721 查看
好久没有看那Linux网络编程这本书了,今天看到了重点部分—TCP套接字。下面先来看看套接字的地址结构
Linux系统的套接字可以支持多种协议,每种不同的协议都是用不同的地址结构。在头文件<linux/socket.h>中有一个这样的老式结构(现在一般不使用这个结够了)。
现在一般使用下面这个sockaddr_in结构(用来设置/获取地址信息):
其中,in_addr这个数据结构:
在现在很火的IPv6中套接字地址结构使用了下面这个结构体(结构中的成员是有序排列的):
好了,看个例子更好说明这些结构体的应用,下面以IPv4为例:
一些基本的函数:
IP地址转换函数:inet_addr()和inet_ntoa()
格式:
Linux系统的套接字可以支持多种协议,每种不同的协议都是用不同的地址结构。在头文件<linux/socket.h>中有一个这样的老式结构(现在一般不使用这个结够了)。
struct sockaddr
{
unsigned short sa_family; //套接字的协议簇地址类型,TCP/IP协议对于IPv4地址类型为AF_INET
char sa_data[14];//存储具体的协议地址
};
现在一般使用下面这个sockaddr_in结构(用来设置/获取地址信息):
struct sockaddr_in
{
unsigned short sin_len; //IPv4地址长度
short int sin_family; //指代协议簇,在TCP套接字编程只能是AF_INET
unsigned short sin_port; //存储端口号(使用网络字节顺序),数据类型是一个16为的无符号整形类型
struct in_addr sin_addr;//存储IP地址,IP地址是一个in_add结构体(结构在下面)
unsigned char sin_zero[8]; //为了让sockaddr与sockaddr_in两个数据结构保持大小相同而保留的空字节
};
其中,in_addr这个数据结构:
struct in_addr
{
unsigned long s_addr; //按照网络字节顺序存储IP地址
};
在现在很火的IPv6中套接字地址结构使用了下面这个结构体(结构中的成员是有序排列的):
#DEFINE SIN6_LEN
struct sockaddr_in6
{
unsigned short int sin6_len; //IPv6结构长度,是一个无符号的8为整数,表示128为IPv6地址长度
short int sin6_family; //地址类型AF_INET6 unsigned short int sin6_port; //存储端口号,按网络字节顺序
unsigned short int sin6_flowinfo; //低24位是流量标号,然后是4位的优先级标志,剩下四位保留
struct in6_addr sin6_addr; //IPv6地址,网络字节顺序
};
struct in6_addr
{
unsigned long s6_addr; //128位的IPv6地址,网络字节顺序
};
好了,看个例子更好说明这些结构体的应用,下面以IPv4为例:
struct sockaddr_in mysock;
mysock.sin_family = AF_INET; //TCP地址结构
mysock.sin_port = htons(3490); //字节顺序转换函数(后面我会介绍的)
mysock.sin_addr.s_addr = inet_addr("166.111.160.10");//设置IP地址
bzero(&(mysock.sin_zero),8);//设置sin_zero为8位保留字节
//如果mysock.sin_addr.s_addr = INADDR_ANY,则不指定IP地址(用于server程序)
一些基本的函数:
IP地址转换函数:inet_addr()和inet_ntoa()
格式:
unsigned long inet_addr(const char *cp);
char* inet_ntoa(struct in_addr in);
相关文章推荐
- linux网络设备应用与驱动编程学习笔记(1)——应用编程(套接字)
- 套接字地址结构笔记----C++网络编程
- 我的网络编程学习之路——套接字地址结构
- 六、Linux网络编程-socket、套接字地址结构、地址转换、字节序、套接字类型
- Unix网络编程学习笔记【1】套接字地址结构
- Linux 网络编程 套接字结构
- [Linux网络编程学习笔记]管道的创建和使用
- linux网络编程学习笔记之五 -----并发机制与线程�
- Java网络编程学习笔记(四)Internet地址
- 【学习笔记】天嵌2440第三季下学期——linux tcp网络编程
- UNIX环境编程--------原始套接字学习笔记-----Linux原始套接字实现分析
- Linux 网络编程——原始套接字实例:MAC 地址扫描器
- Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介
- TCP/IP网络编程 学习笔记_8 --优雅地断开套接字连接
- Linux网络编程-学习笔记(基础TCP套接字函数)
- 【Android 应用开发】Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介
- TCP/IP网络编程 学习笔记_8 --优雅地断开套接字连接
- Linux 网络编程——原始套接字实例:MAC 地址扫描器
- [学习笔记]套接字地址结构
- 网络编程学习笔记(Unix域套接口地址)