摘要: 在写路由器时,涉及到对ARP数据包的传输和接收!本来我是打算将广播,传输,接收一块儿写完之后再来说这块儿的,但是下午突然就没心思了,明天开始要休息五天,所以决定先把目前写了的部分讲述一下吧!我们先来看看ARP数据包的结构:一个ARP数据包为42个字节,前14个字节为以太网首部,后28个字节为ARP请求/应答部分。在看代码之前,我们首先得弄懂,ARP数据包的传输原理。假设A想B发送一个数据包,A并不知道B在哪里,那么A首先会发一个广播的ARP请求,这个网段上的所有计算机(电脑)都会接收到来自A的ARP请求,由于每台计算机(电脑)都有自己唯一的MAC和IP,那么它会分析目的IP是不是自己的IP,如 阅读全文
posted @ 2014-01-14 14:18 爱吃冰红茶 阅读(2090) 评论(0) 推荐(0) 编辑
摘要: 最近打算写一个简单路由器,里面有用到ioctl获取网络接口信息,那就先把这部分单独拿出来说一说吧!ioctl这个函数,可以用来对特殊文件的基础设备参数进行操作,它们可以完成与打开文件描述符相关联的控制功能。在程序启动时获得主机上所有接口的信息: 接口的地址、接口是否支持广播、是否支持多播等等。成功返回0,出错则返回-1。本文里只是单独对获取网络接口信息部分讲解。先列出一些本文里ioctl的相关ioctl 请求的request 参数以及arg 地址必须指向的数据类型:request参数相关说明 指向数据类型SIOCGIFCONF获取所有接口信息struct ifconfSIOCGIFADDR获取 阅读全文
posted @ 2014-01-13 11:15 爱吃冰红茶 阅读(1116) 评论(0) 推荐(0) 编辑
摘要: 之所以专门把STL中的这两个拿出来说一说,是因为vector和deque都是支持随机访问的,其支持的迭代器类型都为随机访问,而不像map,set,list等都是支持双向迭代器的。vector,deuqe之对比:1:随机访问速度:vector > deque。2;deque性能损失比vector高几个数量级:因为deque首次插入一个元素时,会默认动态分配512字节空间,当这512字节空间用完后,它会再动态分配自己另外的512字节空间,然后虚拟地连在一起。deque的这种设计使得它具有比vector复杂得多的架构、算法和迭代器设计,也使得性能损失比vector高!3:在插入删除操作时,de 阅读全文
posted @ 2014-01-09 18:20 爱吃冰红茶 阅读(468) 评论(0) 推荐(0) 编辑
摘要: 这是真正意义上的第一篇自己写的博客,以前的都是copy的,后来发现这有很多弊病,所以果断全部给delete了!不说废话了,正式开始!前段时间,跟着项目做智能家居里的一部分工作,里面有写一个定时器,今天就专门来说说这个!一说到定时器,估计很多人都第一个想到的是用alarm来做,这个是没问题的,我最初所用的方法也是用的是alarm,但是由于项目要求是在一个进程内控制多个设备的定时开关机(我设计的是16个),于是用alarm就会觉得力有不逮了!先来看看用alarm吧!一个进程只能有一个闹钟时间,如果在调用alarm之前已设置过闹钟时间,则任何以前的闹钟时间都被新值所代替。在最初用alarm时,我是先 阅读全文
posted @ 2014-01-03 14:18 爱吃冰红茶 阅读(680) 评论(0) 推荐(0) 编辑