博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
套接口编程简介
阅读量:5330 次
发布时间:2019-06-14

本文共 1122 字,大约阅读时间需要 3 分钟。

1、套接口地址结构

POSIX规范只需要结构中的三个成员:sin_family、sin_addr、sin_port。其中sin_addr又是一个结构

2、通用套接口地址结构

套接口函数被定义为采用指向通用套接口地址结构的指针。由于套接口函数的定义并没有使用void*指针类型,

所以调用套接口函数时必须进行强制类型转换。

使用通用套接口地址结构的原因:内核必须依据通用套接口地址结,检查sin_family的值来确定结构的类型

3、字节排序函数

多字节数据在内存中存储有两种方法。小端字节序把低字节存储在起始地址;大端字节序高序字节存储在起始地址。

POSIX规范规定,套接口地址结构中一些成员按网络字节序进行维护,所以必须注意主机字节序和网络字节序之间

的转换。

#include <netinet/in.h>

返回网络字节序值

uint16_t htons (uint16_t)

uint32_t htonl (uint32_t)

返回主机字节序值

uint16_t ntohs (uint16_t)

uint32_t ntohl (uint32_t)

4、地址转换函数

地址转换函数用于ASCII字符串和网络字节序的二进制值间转换地址

#include <arpa/inet.h>

int inet_aton(const char *strptr, struct in_addr *addrptr)

把strptr所指的字符串转换为32位的网络字节序二进制值,把结果保存在addrptr中。成功返回1,失败返回0。

 

in_addr_t inet_addr (const char *strptr)

返回32位网络字节序二进制值。失败时返回一个常值INADDR_NONE(255.255.255.255),所以该函数不能处理

点分十进制数串255.255.255.255

 

char *inet_ntoa (struct in_addr inaddr)

将32位网络字节序二进制值转换成点分十进制数串。

 

下面两个转换函数对ipv4和ipv6地址都能处理。

#include <arpa/inet.h>

点分十进制到二进制转换

int inet_pton (int family, const char *strptr, void *addrptr)

二进制到点分十进制转换

const char *inet_ntop (int family, const void *addrptr, char *strptr, size_t len)

转载于:https://www.cnblogs.com/jc-nogame/p/4347078.html

你可能感兴趣的文章
CSS 透明度级别 及 背景透明
查看>>
Linux 的 date 日期的使用
查看>>
PHP zip压缩文件及解压
查看>>
SOAP web service用AFNetWorking实现请求
查看>>
Java变量类型,实例变量 与局部变量 静态变量
查看>>
mysql操作命令梳理(4)-中文乱码问题
查看>>
Python环境搭建(安装、验证与卸载)
查看>>
一个.NET通用JSON解析/构建类的实现(c#)
查看>>
Windows Phone开发(5):室内装修 转:http://blog.csdn.net/tcjiaan/article/details/7269014
查看>>
详谈js面向对象 javascript oop,持续更新
查看>>
关于这次软件以及pda终端的培训
查看>>
jQuery上传插件Uploadify 3.2在.NET下的详细例子
查看>>
如何辨别一个程序员的水平高低?是靠发量吗?
查看>>
新手村之循环!循环!循环!
查看>>
正则表达式的用法
查看>>
线程安全问题
查看>>
SSM集成activiti6.0错误集锦(一)
查看>>
下拉刷新
查看>>
linux的子进程调用exec( )系列函数
查看>>
MSChart的研究
查看>>