套接口编程简介
来源:互联网 发布:淘宝商城运营主管招聘 编辑:程序博客网 时间:2024/04/30 02:43
套接口编程简介
1.套接口地址结构
(1).IPv4套接口地址结构
IPv4套接口地址结构通常称为"网际套接口地址结构",以“sockaddr_in”命名,定义在头文件<netinet/in.h>中。
struct in_addr {in_addr_t s_addr;//32-bit IPv4 address.network byte ordered};struct sockaddr_in {uint8_t sin_len;//length of structuresa_family_t sin_family;//AF_INETin_port_t sin_port;//16 bit tcp or udp port number.network byte orderedstruct in_addr sin_addr;//32-bit IPv4 address. network byte orderedchar sin_zero[8];//unused};
(2)通用套接口地址结构
struct sockaddr {uint8_t sa_len;sa_family_t sa_family;//address family:AF_xxxchar sa_data[4];//protocol-specific address};从应用程序开发人员的观点看,这些通用的套接口地址结构的唯一用途是给指向特定于协议的地址结构的指针转换类型。
从内核的角度看,使用指向通用套接口地址结构的指针的原因是:内核必须依据调用者的指针,将其转换为struct sockaddr*类型,然后检查sa_family的值来确定结构的类型。
(3)还有ipv6套接口地址结构和新的通用套接口地址结构。
2.值-结果参数
当把套接口地址结构传递给套接口函数时,总是通过指针来传递的,即传递的是一个指向结构的指针。结构的长度也作为参数传递时,其传递的方式取决于结构传递方向:
1).从进程到内核传递套接口地址结构,有3个函数:bind, connect, sendto,这3个函数的一个参数是指向套接口地址结构的指针,另一个是结构的整数大小。所以从进程到内核要确切拷贝多少数据是知道的。
2).从内核到进程传递套接口地址结构有4个函数:accept,recvfrom,getsockname,getpeername。这4个函数的两个参数是:指向套接口地址结构的指针和指向表示结构大小的整数的指针。
为何将结构大小由整数给为指向整数的指针?因为当函数被调用时,结构大小是一个值(此值告诉内核该结构的大小,使内核在写此结构时不至于越界),当函数返回时,结构大小又是一个结果(它告诉进程内核在此结构中确切存储了多少信息)。这种参数类型叫做值-结果参数。
- 套接口编程简介
- 第三章:套接口编程简介
- 第3章 套接口编程简介
- 第3章 套接口编程简介
- 1. 套接口简介
- 套接口编程基础
- 套接口编程
- UDP套接口编程
- 基本UDP套接口编程
- 基本TCP套接口编程
- 基本UDP套接口编程
- UDP套接口编程基础
- 基本TCP套接口编程
- linux套接口编程基础
- TCP套接口编程(Socket)
- UNIX的套接口(Socket)编程简介 (http://www.fanqiang.com)
- 网络编程2 - TCP套接口编程
- 网络编程3 - UDP套接口编程
- 3D重建之三角剖分:开源库总结
- 分布式追踪系统---google的dapper
- 标签自定义
- View 5部署之二:vSphere 5共享存储配置
- Annotation注解的介绍和使用 自定义注解
- 套接口编程简介
- gdb调试初接触
- The Pragmatic Programmer 之 DRY 原则
- 递推求组合数模板
- View 5部署之三:vCenter Server的预留与限制
- C语言的数学函数
- 数值类型转换规则以及进制转换
- View 5部署之四:vCenter插件简化存储管理
- maven 不能设置为web3.0人解决方法