socket 基本API

socket 基本API

地址结构

ipv4地址结构

<netinet/in.h>

struct in_addr{
in_addr_t s_addr;
}
struct sockaddr_in{
uint8_t sin_len;
sa_family_t sin_family;
in_port_t sin_port;
struct in_addr sin_addr;
char sin_zero[8];
}

ipv6 地址结构

<netinet/in.h>

struct in6_addr
  {
	uint8_t	__u6_addr8[16];
  };
struct sockaddr_in6
  {
    __SOCKADDR_COMMON (sin6_);
    in_port_t sin6_port;	/* Transport layer port # */
    uint32_t sin6_flowinfo;	/* IPv6 flow information */
    struct in6_addr sin6_addr;	/* IPv6 address */
    uint32_t sin6_scope_id;	/* IPv6 scope-id */
  };

通用地址结构

struct sockaddr
  {
    __SOCKADDR_COMMON (sa_);	/* Common data: address family and length.  */
    char sa_data[14];		/* Address data.  */
  };

内存控制函数

第一类

<strings.h>

void bzero(void *dest,size_t nbytes);
void bcopy(const void *src,void *dest,size_t nbytes);
int  bcmp(const void *ptr1,const void ptr2,size_t nbytes);

第二类

<string.h>

void *memset(void dest,int c,size_t bytes);
void *memcpy(void *dest,const void *src,size_t nbytes);
int   memcmp(const void *ptr,const void *ptr2,size_t nbytes);

ipv4点分十进制与网络二进制转换

第一类

<arpa/inet.h>

int inet_aton(const char* strptr,struct in_addr * addrptr);
in_addr_t inet_addr(const char*strptr);
char *inet_ntoa(struct in_addr inaddr);

只可用于ipv4

第二类

<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);

主机序转网络序

<netinet/in.h>

uint16_t htons(uint16_t host16bitvalue);
uint32_t htonl(uint32_t host32bitvalue);
uint16_t ntohs(uint16_t net16bitvalue);
uint32_t ntohl(uint32_t net32bitvalue);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值