码迷,mamicode.com
首页 > 其他好文 > 详细

套接口编程简介

时间:2015-03-19 00:43:12      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:

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)

套接口编程简介

标签:

原文地址:http://www.cnblogs.com/jc-nogame/p/4347078.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!