套接字结构体
来源:互联网 发布:阿里云大数据分析 编辑:程序博客网 时间:2024/04/29 05:30
unix网络编程第三章
书中的套接字结构体如下:
IPv4套接字地址结构:
以sockaddr_in命名在<netinet/in.h>
头文件中, POSIX定义如下:
struct in_addr { in_addr_t s_addr; // 32-bit IPv4 address};struct sockaddr_in { uint8_t sin_len; // length of structure (16) sa_family_t sin_family; //AF_INET,8-bit in_port_t sin_port; //16-bit TCP or UDP port number struct in_addr sin_addr; //32-bit IPv4 address char sin_zero[8]; //unused };
而ubuntu系统上的IPv4套接字结构和书中的有些不同哦,如下:
/*__SOCKADDR_COMMON 宏定义 bits/sockaddr.h*/#define __SOCKADDR_COMMON(sa_prefix) \ sa_family_t sa_prefix##family#define __SOCKADDR_COMMON_SIZE (sizeof (unsigned short int))/************************************************************//* /usr/include/netinet/in.h */struct in_addr { in_addr_t s_addr; };struct sockaddr_in { __SOCKADDR_COMMON (sin_); /*宏定义*/ in_port_t sin_port; /* Port number. */ struct in_addr sin_addr; /* Internet address. */ /* Pad to size of `struct sockaddr'. */ unsigned char sin_zero[sizeof (struct sockaddr) - __SOCKADDR_COMMON_SIZE - sizeof (in_port_t) - sizeof (struct in_addr)]; };
下面这一段为宏定义:
#define __SOCKADDR_COMMON(sa_prefix) \ sa_family_t sa_prefix##family
其中,##
为连接符,连接前后两个字符串,没有再扩展特性,详见宏定义,即__SOCKADDR_COMMON(sin_);
相当于sa_family_t sin_family;
此外,ubuntu系统的套接字结构并没有sin_len成员变量, 为了保持套接字长度一致, sa_family_t 类型变量长度为16位
未完待续
0 0
- 套接字结构体
- 套接字发送结构体
- socket套接字使用的结构体
- 套接字地址结构
- 套接字地址结构
- 套接字地址结构
- 套接字地址结构
- linux 套接字结构
- 套接字地址结构
- 套接字地址结构
- Unix套接字地址结构
- 套接字的地址结构
- IPV4套接字地址结构
- Unix套接字地址结构
- IPv4套接字地址结构
- 不同套接字结构示意图
- 套接字结构和API
- 网络套接字发送结构体及数据处理
- uva 11210 暴力搜索
- Kuberentes Ingress
- [李景山php] 单进程 php 的执行流程
- 散列表的java源码实现
- Cornerstone Mac 3.0.3破解版
- 套接字结构体
- 阿里大于 短信发送API开发介绍(JAVA)
- Maven概念篇
- C语言中 static作用
- ananconda源问题于解决
- 从Kafka的一次broker假死介绍Kafka架构和DefaultPartitioner
- 再谈软链接的scp拷贝
- Bubble Gum, Bubble Gum, in the dish, how many pieces do you wish?”
- 房卡斗地主 微信斗地主 全套数据库 安卓端 苹果端