Chinaunix首页 | 论坛 | 博客
  • 博客访问: 225850
  • 博文数量: 59
  • 博客积分: 1215
  • 博客等级: 少尉
  • 技术积分: 575
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-09 02:18
文章分类

全部博文(59)

文章存档

2012年(53)

2011年(6)

分类: C/C++

2012-01-18 02:39:36

    这是三、四章的读书笔记:

    第三章:
    这一章可以算作真正教你编程了。首先,讲了最基本的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,一个是获取套接字的本地协议地址,一个是外地协议地址。
    
阅读(1557) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~