UNIX网络编程---套接字编程简介(三)
UNIX网络编程---套接字编程简介
一、概述
从这里开始正式开始网络编程之旅,所有的函数都是基本的库函数。这些都是网络编程的基础。Come on!!!!
二、套接字地址结构
大多数套接字函数都需要一个指向套接字地址结构的指针作为参数。每个协议簇都定义它自己的套接字地址结构。这些机构的名字均以sockaddr_开头,并以对应每个协议簇的唯一后缀结尾。
1) Ipv4套接字地址结构
这是一个很常用的套接字。定义在<netinet/in.h>
Struct in_addr{
In_addr_ts_addr; //32位
};
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];
};
从进程到内核传递套接字地址结构的4个套接字函数(bind、connect、sendto、sendmsg)都要调用sockargs函数,该函数从进程复制套接字地址结构,并显示地把它的sin_len字段设置成早先作为参数传递给这4个函数的该地址结构的长度。从内核到进程传递套接字地址结构的5个套接字函数分别是accept、recvfrom、recvmsg、getpeername和getsockname,均在返回到进程之前设置sin_len字段。
Ipv4地址和TCP或UDP端口号在套接字地址结构中总是以网络字节来存储。
套接字地址结构仅在给定主机上使用:虽然结构中的某些字段用在不同主机之间的通信,但是结构本身并不在主机之间传递。
2) 通用套接字地址结构
在头文件 #include <sys/socket.h>
Struct sockaddr{
Uint8_tsa_len;
Sa_family_t sa_family;
Char sa_data[14];
};
三、值—结果参数
四、字节排序函数
五、字节操作函数
六、Inet_aton、inet_addr和inet_ntoa函数
七、Inet_pton和inet_ntop函数
八、Sock_ntop和相关函数
九、Readn、writen和readline函数