Unix环境编程——套接字编程

套接字地址结构

#include

在IPv4网域(AF_INET)中套接字地址结构用sockaddr_in表示;

在IPv6网域(AF_INET6)中套接字地址结构用sockaddr_in6表示;

通用套接字地址结构,为支持任意协议族传入套接字函数,都被强制转换成通用套接字地址结构;

第一代:struct sockaddr、第二代:struct sockaddr_storage、

套接字地址结构的传递

从进程到内核:结构指针、结构大小(标识结构大小的整数)

从内核到进程:结构指针、结构大小的指针(整数的指针)


主机字节序、网络字节序互相转换:

#include

uint32_t htonl(uint32_t hostint32); //返回以网络字节序表示的32位整型数

uint16_t htons(uint16_t hostint16); //返回以网络字节序表示的16位整型数

uint32_t ntohl(uint32_t netint32); //返回以主机字节序表示的32位整型数

uint16_t ntohs(uint16_t netint16); //返回以主机字节序表示的16位整型数


地址值与表达的相互转换

#include

domain域仅支持AF_INET、AF_INET6

地址长度宏定义:INET_ADDRSTRLEN/INET6_ADDRSTRLEN

const char* inet_ntop(int domain, const void* addr,char* str,size_t len);

//若成功返回IP地址字符串指针,若出错返回NULL

int inet_pton(int domain,const char* restrict str, void* restrict addr);

//若成功返回1,若格式无效返回0,若出错返回-1

你可能感兴趣的:(Unix环境编程——套接字编程)