套接字编程简介

套接字地址结构的比较:



 

字节排序函数

                     

h代表host,n代表network,s代表short,l代表long。s是16位的值(端口号),l是32位的值(IPv4地址)。

 

 

 

字节操纵函数

#include<strings.h>
void bzero(void *dest, size_t nbytes);

把目标字符串中指定树木的字节置为0。使用此函数来把一个套接字地址结构初始化为0。

 

#include<string.h>
void *memset(void *dest, int c, size_t len);

把目标字符串中指定数目的字节值为值c。

 

 

字符串与网络字节序转换

通常使用的IP地址表示是点分十进制表示法,而网络字节序(存放在套接字地址结构中的值)是二进制。

 

IPv4:

inet_addr函数:(此函数已废弃,应该用inet_aton函数)


类型in_addr_t在内部声明为32位整数型。

将string指向的C字符串转换为一个32位的网络字节序二进制值。并返回。


 

inet_aton函数:与inet_addr函数在功能上完全相同,只不过函数利用了in_addr结构体

将string指向的C字符串转换为一个32位的网络字节序二进制值。

 

 

inet_ntoa函数,将网络字节序整数IP地址转换成熟悉的字符串(点分十进制形式)

 

IPv4和IPv6通用

 inet_pton和inet_ntop函数

p(presentation)和n(numeric)分别代表表达数值

#include<arpa/inet.h>
int inet_pton(int family, char *strptr, vpid *addrptr);
const char *inet_ntop(int family, const void *addrptr, size_t len);         //返回指向结果的指针

family参数可以是AF_INET或AF_INET6

inet_pton转换由strptr指针所指的字符串,并通过addrptr指针存放二进制结果。

inet_ntop进行相反的转换,从数值格式(addrptr)转换到表达格式(strptr),并返回指向结果的指针。

 

sock_ntop和相关函数

自行编写一个名为sock_ntop的函数,以指向某个套接字地址结构的指针为参数,查看该结构的内部,然后调用适当的函数返回该地址的表达格式。

char *sock_ntop(const struct sockadrr *sockaddr, socklen_t addrlen);

sockaddr指向一个长度为addrlen的套接字地址结构。本函数用它自己的景泰缓冲区来保存结果。而指向该缓冲区的一个指针就是它的返回值。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值