unp-cha3 小结

  由于前面两节是作者介绍本书的一些基本知识和相关约定,在遇到第一example的时候被那些系统的type定义和相关的头文件的约定的符号吓到了。然后就直接跳到第三章了,等有了比较好的理解之后后再回去看part1。

  慢慢发现很多书的第一二章都是对全书的一个缩影,一开始相对来说想要彻底弄明白会比较困难,很多时候我都只是对一些相关约定进行大概的了解,并没有深入追究。

  第三章介绍了socket的数据结构,不同系统有不同的定义,还包括IPv6版本的。但最基本的都包括有ip address,structure len,af(address family)等。还解释了为什么ip address字段为什么是一个struct结构。(历史遗留原因),下面是一个ipv4的socket定义:

     

  上面的uint8_t,in_port_t等数据类型的定义在<sys/types.h>可以查找到。

  函数调用socket数据结构的时候都是引用调用,通过指针来传递。在这里一个比较有意思的是在一些函数传递socket长度的时候不是传递一个具体大小,而是一个长度变量的引用(&),书本的解释是这是个value-result argument,在传给内核的时候是以value的形式传递的,内核经过处理之后是以处理的结果大小来传回给process。

  接下来介绍了不同操作系统对高低字节处理的不同,网络ip address和我们常用的“125.33.78.99”地址之间的转换函数,对I/O的处理函数read和write,作者还介绍了改进版的readn和writen和readline函数。这些基础函数的介绍都是为后面的章节做铺垫的。下面简单介绍函数:

     

  bzero是把nbytes个字节的目的地址全部赋值为0;

  bcopy是把src地址的值复制nbytes个字节到dest;

  bcmp当相等的时候返回0。

     

  以上函数实现网络字节(network byte)和字符串(ASCII string)相互转换,其中a前缀代表ascii,n代表network。但要注意上面的函数只对ipv4有效。而下面的两个函数对ipv4和ipv6都有用:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值