套接口编程
时间:2022-04-22
本文章向大家介绍套接口编程,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1 struct in_addr{
2 in_addr_t s_addr;
3 };
4 struct sockaddr_in{
5 uint8_t sin_len;
6 sa_family_t sin_family;
7 in_port_t sin_port;
8
9 struct in_addr sin_addr;
10 char sin_zero[8];
11 };
通用套接口地址结构:
struct sockaddr{
uint8_t sa_len;
sa_family_t sa_family;
char sa_data[14];
};
int bind(int ,struct sockaddr *,socklen_t);
strcut sockaddr_in serv;
bind(sockfd,(struct sockaddr *)&serv,sizeof(serv));
1 进程到内核的传递:bind,connect,sendto
struct sockaddr_in serv;
connect(sockfd,(SA *)&serv,sizeof(serv));
2 内核到进程的传递:accept,recvfrom,getsockname,getpeername
struct sockaddr_un cli;
socklen_t len;
len = sizeof(cil);
getpeername(unixfd,(SA *)&cli,&len);
值-结果参数:
当函数被调用时,结构大小是一个值。当函数返回时,结构大小是一个结果(我靠!这是跟我玩哲学么?)
常用的值-结果参数:
1 select 3个变量
2 getsockopt 长度变量
3 recvmsg msghdr中的两个成员:msg_namelen msg_controllen
4 ifconfig ifc_len
5 sysctl 前两个长度参数
小端字节序:低序字节存储在起始地址
大端字节序
验证大小端字节序:
1 int main(int argc,char ** argv){
2 union{ shot s;
3 char c[sizeof(short)];
4 }un;
5 un.s = 0x0102;
6 printf("%s:",CPU_VENDOR_OS);
7 if(sizeof(short) ==2){
8 if(un.c[0]==1 && un.c[1]==2)
9 printf("big-endiann");
10 else if(un.c[0]==2 && un.c[1]==1)
11 printf("little-endiann");
12 else
13 printf("unknownn");
14 }else{
15 printf("sizeof(short) = %dn",sizeof(short));
16 }
17 exit(0);
18 }
inet_aton 将字符串转换成32位的网络字节序的二进制值
inet_addr 全为1时,返回INADDR_NONE错误
inet_ntoa 将二进制转换成对应的点分十进制
inet_pton 从表达格式转换到数值格式
inet_ntop 从数值格式转换到表达格式
sock_ntop
- ASP.NET Core中的依赖注入(5): ServiceProvider实现揭秘 【解读ServiceCallSite 】
- ASP.NET MVC的View是如何呈现出来的[实例篇]
- 把人类向机器人乞讨,变成对机器人征税
- 印度6大科技真相 会让很多人大吃一惊
- 了解ASP.NET MVC几种ActionResult的本质:HttpStatusCodeResult & RedirectResult/RedirectToRouteResult
- Python原创0基础入门一看几张图就学会了
- ASP.NET Core中的依赖注入(5):ServicePrvider实现揭秘【补充漏掉的细节】
- 了解ASP.NET MVC几种ActionResult的本质:FileResult
- ASP.NET Core管道深度剖析(1):采用管道处理HTTP请求
- 如何用Python和深度神经网络识别图像?
- 余军:分布式数据库在金融行业的创新实践
- 微信小游戏采用了我们都忽略的产品推广新切入点
- ASP.NET MVC下的四种验证编程方式[续篇]
- 如何把业务问题变成机器学习的问题?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- kubernetes-配置管理(十一)
- ceph-mimic版
- kubernetes-ingress(十)
- kubernetes-控制器Deployment和DaemonSet(八)
- kubernetes集群网络
- kubernetes-深入理解pod对象(七)
- kubernetes-核心概念及创建应用(六)
- k8s1.13.0二进制部署-Dashboard和coredns(五)
- kubernetes监控-prometheus(十六)
- kubernetes监控-Heapster+InfluxDB+Grafana(十五)
- centos7 安装mysql5.7
- ceph-简介及安装(luminous)版
- Activiti7 查询用户任务列表
- ansible自动化部署工具
- IDEA Activiti 画图中文乱码