网络编程学习2-套接字编程简介
主要记录套接字的基本结构及相关常用函数
1 套接字地址结构-IPv4
1 struct in_addr{ 2 in_addr_t s_addr; // 32位的IPv4地址 3 } 4 5 struct socketaddr_in{ 6 uint_8 sin_len; // 长度 7 sa_family sin_family; //协议族,IPv4为AF_INET 8 in_port_t sin_port; // 端口号 9 struct in_addr sin_addr; //IPv4地址 10 char sin_zero[8]; 11 }
对应于IPv4套接字地址,存在一个通用的套接字地址结构,IPv6对应的通用套接字地址结构与之类似

1 struct sockadd{ 2 uint8_t sa_len; 3 sa_family sa_family; //指示协议族 4 char sa_data[14]; //特定协议地址 5 }
2 IPv6
View Code
IPv4和IPv6套接字结构具有固定的字节数,分别为16字节和28字节,而Unix、数据链路层地址结构以及sockaddr_storage则具有可变长度的套接字结构
3 字节操作函数

1 #include <string.h> 2 void bzero(void *dest, size_t nbytes); 3 void bcopy(const void *src, void *dest, size_t nbytes); 4 int bcmp(const void *src, const void *dest, size_t nbytes); 5 6 7 void *memset(void *dest, int c, size_t len); 8 void *memcpy(void *dest, const void *src, size_t nbytes); 9 int memcmp(const void *ptr1, const void *ptr2, size_t nbytes);
4 字符串与网络地址转换函数

1 #include <arpa/inet.h> 2 int inet_aton(const char *strptr, struct in_addr *addrptr); 3 in_addr_t inet_addr(const char *strptr); 4 char * inet_ntoa(struct in_addr inaddr);
5 通用的字符串与网络地址转换函数

1 #include <arpa/inet.h> 2 int inet_pton(int family, const char *strptr, void *addrptr); 3 const char *inet_ntop(int family, const void *addrptr, char *strptr, size_t len);
这两个函数针对IPv4和IPv6地址结构均支持
另外,为了使调用更加简洁,UNIX网络编程一书中对许多函数进行了封装,以方便调用。详细可查询unp.h头文件
1 struct in6_addr{ 2 uint8_t s6_addr[16]; //128位地址 3 } 4 5 struct sockaddr_in6{ 6 uint8_t sin6_len; 7 sa_family_t sin6_family; 8 in_port_t sin6_port; 9 10 uint32_t sin6_flowinfo; 11 struct in6_addr sin6_addr; 12 13 uint32_t sin6_scope_id; 14 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!