套接字地址结构笔记----C++网络编程
来源:互联网 发布:什么打字软件好用 编辑:程序博客网 时间:2024/06/08 06:03
1.IPv4套接字地址结构:
struct in_addr{ in_addr_t s_addr;}struct sockaddr_in{ uint8_t sin_len; sa_family_t sin_family; in_port_t sin_port; struct in_addr sin_addr; char sin_zero[8];}(1)sin_len是为了增加对OSI协议的支持随着4.3BSD-Reno添加的。
(2)其他几个都是平常网络编程最频繁看到的数据结构。
(3)sin_zero[8]字段几乎不曾用过,我们总是把这个设置为0,但是一般不是直接设置为0,而是先将整个结构全部置零在填写其他的。
就像在之前的一个简单服务器中的那串代码:
bzero(&servaddr,sizeof(servaddr));这行代码也看到了,servaddr传参数的时候都是pass by reference!!!!!
2.通用套接字地址结构
(1)为什么要有这个?因为传递套接字函数的是by reference,所以指针的类型是个很重要的问题。所以前人的解决方式:
在<sys/socket.h>头文件中定义一个通用的套接字地址结构:
struct sockaddr{ uint8_t sa_len; sa_family_t sa_family; char sa_data[14];};(2)于是套接字函数被定义为以某个通用套接字地址结构的一个指针作为参数之一
bind(int , struct sockaddr * ,socklen_t);这里发生了一个类型强制从转换:
struct sockaddr_in serv;bind(sockfd,(struct sockaddr*) &serv,sizeof(serv));3.IPv6套接字地址结构
struct in6_addr{ unit8_t s6_addr[16];};#define SIN6_LENstruct sockaddr_in6{ uint8_t sin6_len; sa_family_t sin6_family; in_port_t sin6_port; uint32_t sin6_flowinfo; //32位流标 struct in6_addr sin6_addr; //128位IPv6地址 uint32_t sin6_scope_id;};4.新的通用套接字地址结构
在<netinet/in.h>
struct sockaddr_storage{ uint8_t ss_len; sa_family_t ss_family;//后面还有对用户透明的接口,足够大!};新的通用套接字能够容纳下系统支持的任何套接字地址结构。
阅读全文
0 0
- Unix网络编程学习笔记【1】套接字地址结构
- Unix网络编程学习笔记【1】套接字地址结构
- 套接字地址结构笔记----C++网络编程
- UNIX网络编程(6)--套接字地址结构、通用套接字地址结构
- unix网络编程之套接字地址结构
- Unix网络编程(一)-套接字地址结构
- Unix网络编程(一):套接字地址结构
- UNIX网络编程(三)-套接字地址结构
- 六、Linux网络编程-socket、套接字地址结构、地址转换、字节序、套接字类型
- 【UNIX网络编程(一)】套接字地址结构、网络字节序和地址转换函数
- 套接字网络编程笔记
- Unix网络编程 卷1 第3章:套接字编程简介(套接字地址结构)
- Linux C 套接字地址结构
- 第三章 套接字编程(1) - 套接字地址结构
- [学习笔记]套接字地址结构
- Linux网络编程---套接字结构
- Linux 网络编程 套接字结构
- unix网络编程第一卷学习之套接字地址结构
- Ubuntu_硬件与系统基础
- 为PHP开发C++扩展
- 【caffe-matlab】目标检测R-FCN算法于Windows下配置
- UX设计师可通过这7种途径提升效率
- 最新十大web安全隐患-四年之后,OWASP发布新版本OWASP Top10 2017
- 套接字地址结构笔记----C++网络编程
- mongodb 储存numpy数组
- iOS中imageNamed 和 imageWithContentOfFile的区别
- web.xml中servlet-mapping的配置(包含/和*的解释与介绍)
- React Native适配iphonex的方案
- git怎么从将在master分支上做的修改提交到develop分支
- dvm_lock_sample 解析
- leaflet 集成百度地图小例子(1)
- 编辑器写博客简要指南