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

套接字地址结构

#include <netinet/in.h>

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

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

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

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

套接字地址结构的传递

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

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


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

#include <arpa/inet.h>

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 <arpa/inet.h>

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值