这是三、四章的读书笔记:
第三章:
这一章可以算作真正教你编程了。首先,讲了最基本的IPv4的套接字地址结构---sockaddr_in,神马都离不开他。POSIX规范只需要这个结构的3个字段:sin_family、sin_addr、sin_port。也讲了POSIX规范的数据类型。还有一个通用套接字地址结构,叫sockaddr,就是为了传不同协议的指针参数,为什么不知直接void*?书上说这是跟内核有关。
接着谈了主机字节序跟网络字节序(后者在网即协议中是大端的),介绍了几个字节序的转换函数(htons、htonl、ntohs、ntohl)。使用这些函数我们就不用担心那么多了,这些事就由他们操心好了。还有讲了点分十进制跟32位的网络字节序二进制值间的转换,几个函数:inet_aton、inet_addr、inet_ntoa,更好的是inet_pton、inet_ntop,因为他们适用IPv4和v6。作者还封装起来搞了一套,蛮好用的。
这一章是基础中的基础。
第四章:
开始介绍TCP编程,一开始就介绍了几个基本的函数(其实真正经常用的函数也就那么几个):
socket函数、connect函数(如果之前没bind会分配临时端口的)、bind函数(如果指定的端口号为0会自动跟你分配一个临时端口,ip地址为INADDR_ANY的时候则表明服务器在不止一个ip地址或者说多个网卡或者ip地址会有变动的情况下,进程仍然能收到数据)、listen函数(参数backlog跟允许处理队列最大长度有关)、close函数(默认情况下,TCP还是会把已排队发送的数据发出去才是正常的TCP连接终止序列)。
接着有提到fork和exec这些函数。想深入的可以去看《APUE》。提到其实exec系列的函数都是基于内核系统调用execve的库函数。
下面是两个函数getsockname和getpeername,一个是获取套接字的本地协议地址,一个是外地协议地址。
阅读(1585) | 评论(0) | 转发(0) |