C语言socket编程----struct sockaddr 和struct sockaddr_in介绍和初始化
sockaddr结构体
struct sockaddr{
sa_family_t sa_family; //地址族,最常用的是"AF_INET"(IPV4)和"AF_INET6"(IPV6);
char sa_data[14]; //包含套接字中的目标地址和端口信息;
};
sockaddr的缺陷:sa_data把目标地址和端口信息混在一起了
sockaddr_in 结构体
sockaddr_in结构体解决了sockaddr的缺陷,把port和addr 分开储存在两个变量中
struct sockaddr_in/ struct sockaddr_in6结构体
struct sockaddr_in{
sa_family_t sin_family; //地址族,常用AF_INET
uint16_t sin_port; //16位TCP/UDP端口号
struct in_addr sin_addr; //32位IP地址
cha sin_zero[8] //不使用
};
struct in_addr{
in_addr_t s_addr; //32位IPV4地址
}
struct sockaddr_in6 {
sa_family_t sin6_family; /* AF_INET6 */
in_port_t sin6_port; /* port number */
uint32_t sin6_flowinfo; /* IPv6 flow information */
struct in6_addr sin6_addr; /* IPv6 address */
uint32_t sin6_scope_id; /* Scope ID (new in 2.4) */
};
struct in6_addr {
unsigned char s6_addr[16]; /* IPv6 address */
};
struct sockaddr_in6相关详见 :http://man7.org/linux/man-pages/man7/ipv6.7.html
初始化和赋值:
IPV4
struct sockaddr_in ina;
bzero(&ina,sizeof(ina));
ina.sin_family=AF_INET;
ina.sin_port=htons(23);
ina.sin_addr.s_addr = inet_addr("132.241.5.10");
IPV4相关例子参考 http://www.cnblogs.com/huqian23456/archive/2011/02/22/1961822.html
IPV6
const ipv6_addr = "::1"; //IPV6地址
struct sockaddr saddr;
memset(&saddr, 0, sizeof(saddr)); / /初始化结构体
saddr.sa_family = AF_INET6;
inet_pton(AF_INET6,ipv6_addr,saddr.sa_data); //设置地址
struct sockaddr_in6 from_addr;
bzero(&from_addr,sizeof(from_addr)); //初始化结构体
from_addr.sin6_family = AF_INET6; //设置地址家族
from_addr.sin6_port = htons(800); //设置端口
inet_pton(AF_INET6,ipv6_addr,from_addr.sin6_addr.s6_addr ); //设置地址
inet_pton inet_ntop 地址转换相关详见 https://www.cnblogs.com/s7vens/archive/2011/12/12/2284964.html
最新文章
- 2016年8月ios面试问题总结
- 【51Nod 1244】莫比乌斯函数之和
- POJ 2823 Sliding Window 线段树区间求和问题
- .net线程池
- KnockoutJS 3.X API 第三章 计算监控属性(1) 使用计算监控属性
- UIlable 属性详用
- FTS抓包看蓝牙的SDP整个过程
- Java基本概念(未完)
- 【mysql5.6】数据类型
- mvc5 知识点01
- UVALive 6692 Lucky Number (思路 + 枚举)
- jquery改变多个css样式
- Gradient boosting
- Code First Entity Framework 6化被动为主动之explicit loading模式实战分析( 附源码)
- jQuery入门学习贴
- 多说评论一次导回 Typecho 本地数据库
- C#应用NPOI实现导出EXcel表格中插入饼状图(可实现动态数据生成)
- C# 多线程锁之ReaderWriterLockSlim
- Oracle11g温习-第十四章:约束( constraint )
- zookeeper 的心跳
热门文章
- i2c设备驱动之设备地址
- srping 事物管理
- vim的多窗口功能与环境参数设置
- Linux中断分层--软中断和tasklet
- django笔记-url
- PIE SDK波段运算
- MySQL数据库插入中文时出现Incorrect string value: '\xE6\x97\xB7\xE5\x85\xA8' for column 'sz_name' at row 1
- JS实现多少小时前,多少天前...
- C#中DataTable与泛型集合互转(支持泛型集合中对象包含枚举)
- tomcat和应用集成