linux socket 常用API


1、字节操纵函数

void bzero(void *dest, size_t nbytes);

   bzero把目标字节串中指定数目的字节置0。我们经常使用该函数把一个套接字地址结构初始化为0。

void bcoyp(const void *src, void *dest, size_t nbytes);

   将指定数目的字节从源字节串移动到目标字节串。

int bcmp(const void *ptr1, const void *ptr2, size_t nbytes);

   比较两个任意的字节串,若相同则返回0,若不同则返回非0.

2、地址转换函数:它们在ASC2字符串与网络字节序的二进制之间转换网际地址。

      inet_aton、inet_addr、inet_ntoa在点分十进制数串(如"192.168.112.96")与长度为32位的网络字节序

二进制间转换IPv4地址。"a"是指ASC2;"n"是指net

      inet_pton和inet_ntop对于IPv4和IPv6地址都适应。

#include <arpa/inet.h>

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

   将strptr所指的C字符串转换成32位的网络字节序二进制值,并通过addrptr来存储。

   返回:若字符串有效则为1,否则为0.

int_addr_t inet_addr(const char *strptr);

   int_addr进行与上面相同的转换,返回值为32为二进制网络字节序值。

   返回:若字符串有效则为32位二进制网络字节序的IPv4地址,否则为INADDR_NONE.

   该函数存在一个问题:点分十进制数串"255.255.255.255"(这是IPv4的有限广播地址)不能由该函数处理。

如今inet_addr已被废弃,新的代码(IPv4)应该使用inet_aton函数。

char *inet_ntoa(struct in_addr inaddr);

   将一个32位的网络字节序二进制IPv4地址转换成相应的点分十进制数串。

   返回:指向一个点分十进制数串的指针。

   函数inet_pton和函数inet_ntop是随IPv6出现的新函数,对于IPv4地址和IPv6地址都适用。

函数名p和n分别代表 表达presentation和数值numeric。地址的表达式格式通常是ASC2字符串,

数值格式则是存放到套接字地址结构中的二进制值。

#include <arpa/inet.h>

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

   返回:若成功则为1,若输入不是有效的表达式则为0,若出错则为-1.

   family参数既可以是AF_INET,也可以是AF_INET6。若一不被支持的地址族作为family参数,这两个

函数都返回一个错误,并将errno置为EAFNOSUPPORT.

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

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

   返回:若成功则为指向结果的指针,若出错则为NULL。
   inet_ntop进行相反的转换,从数值格式addrptr转换到表达式格式strptr。len参数是目标存储单元的

大小,以免该函数溢出其调用者的缓冲区。为了有助于指定这个大小,在<netinet/in.h>头文件中有如

下定义:

#define INET_ADDRSTRLEN      16     /* for IPv4 dotted-decimal */

#define INET6_ADDRSTRLEN    46     /* for IPv6 hex string */

3、读写函数

ssize_t readn(int filedes, void *buff, size_t nbytes);

ssize_t writen(int filedes, const void *buff, size_t nbytes);

ssize_t readline(int filedes, void *buff, size_t maxlen);

均返回读写到的字节数,出错返回-1



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值