Unix 网络编程(三)- 网络套接字编程“基础API”介绍

本文详细介绍了Unix网络编程中的基础API,包括套接字地址结构(如sockaddr_in和sockaddr),字节排序函数(如htons)、字节操作函数(如bzero)以及地址转换函数(如inet_pton和inet_ntop)。这些API在处理套接字通信时起到关键作用,涉及网络字节序转换、地址结构理解和数据操作。
摘要由CSDN通过智能技术生成

写在开头:

在第二篇博文中我们学习了套接字编程所需要的关于传输层协议的一些理论知识,从而对像“TCP建立连接的三次握手”等知识有了了解。在掌握了这些知识之后,我们开始学习套接字编程的API。因为API太多而且使用不同传输协议的套接字有些API不同,所以给我们的学习带来了很大的困难。为了系统的有层次的学习这些API,我们将遵循《Unix网络编程套接字联网API》这本书中的顺序来学习。所以我们首先需要学习的是所有套接字都会用的一些辅助的基础的API,包括:“套接字地址结构”,“字节排序函数”,“字节操作函数”,“地址转换函数”等。下面我们依次来学习这些API。

总结一些知识是快乐的也是痛苦的。

------------------------------------------------------------------------------------------------------------------------

套接字地址结构:

在最开始的第一篇博文的daytimetcpcli.c的line 8中有过这么一个结构体的定义:

struct sockaddr_in  servaddr;

当时候的解释是这样的:“line8 定义了一个sockaddr_in类型的结构体 servaddr用来标识将要访问的服务器的ip地址以及端口号等,sockaddr_in是ipv4的结构体类型”。在daytiemimetcpsrv.c中也有同样的一个地址结构的定义。在这一部分,我们就开始讲解sockaddr_in等这一类套接字地址结构。

学习套接字地址结构的意义在于好多的套接字函数都需要一个指向这个套接字地址结构的指针作为参数,而且有些时候需要对这个地址结构的一些成员进行赋值操作,所以我们应该熟知这些地址结构的内容。主要有如下几类套接字地址结构:

IPv4套接字地址结构

IPV4套接字地址结构也称为“网际套接字地址结构”,以sockaddr_in来命名,可以查看你机器的或者是linux源码中的<netinet/in.h>中的内容。因为Unix毕竟和linux有些不同,而且不同发行版本之间也有不同,所以这个结构体中的有些成员函数的定义有少许差别,但是总体上没有太大差别,这里列出书上给的定义:

struct in_addr {
in_addr_t  s_addr;   /*32位的网络字节流ip地址 */
}
struct sockaddr_in {
  unit8_t	        sin_len;		/* length of structure (16) */
  sa_family_t		sin_family;		/* AF_INET */
  in_port_t		sin_port;		/* 16-bit TCP or UDP port number in network byte ordered*/
  struct in_addr 	sin_addr;		/* 32-bit IPv4 adddress in network byte ordered*/
  char			size_zero[8]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值