摘要: sock_raw原始套接字编程可以接收到本机网卡上的数据帧或者数据包,对与监听网络的流量和分析是很有作用的.一共可以有3种方式创建这种socket1.socket(AF_INET, SOCK_RAW, IPPROTO_TCP|IPPROTO_UDP|IPPROTO_ICMP)发送接收ip数据包2.socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP|ETH_P_ARP|ETH_P_ALL))发送接收以太网数据帧3.socket(AF_INET, SOCK_PACKET, htons(ETH_P_IP|ETH_P_ARP|ETH_P_ALL))过时了,不要用啊理解 阅读全文
posted @ 2011-12-07 22:09 only_eVonne 阅读(2125) 评论(0) 推荐(0) 编辑
摘要: 一、MAC帧头定义/*数据帧定义,头14个字节,尾4个字节*/typedef struct _MAC_FRAME_HEADER{char m_cDstMacAddress[6];//目的mac地址char m_cSrcMacAddress[6];//源mac地址short m_cType; //上一层协议类型,如0x0800代表上一层是IP协议,0x0806为arp}__attribute__((packed))MAC_FRAME_HEADER,*PMAC_FRAME_HEADER;typedef struct _MAC_FRAME_TAIL{unsigned int m_sCheck... 阅读全文
posted @ 2011-12-07 21:29 only_eVonne 阅读(49953) 评论(1) 推荐(5) 编辑
摘要: 与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。条件的检测是在互斥锁的保护下进行的。如果一个条件为假,一个线程自动阻塞,并释放等待状态改变的互斥锁。如果另一个线程改变了条件,它发信号给关联的条件变量,唤醒一个或多个等待它的线程,重新获得互斥锁,重新评价条件。如果两进程共享可 阅读全文
posted @ 2011-12-07 11:03 only_eVonne 阅读(775) 评论(0) 推荐(0) 编辑
摘要: 简介:服务器程序利用线程技术响应客户请求已经司空见惯,可能您认为这样做效率已经很高,但您有没有想过优化一下使用线程的方法。该文章将向您介绍服务器程序如何利用线程池来优化性能并提供一个简单的线程池实现。线程池的技术背景在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁。如何利用已有对象来服务就是一个需要解决的关键问题,其实这就是一些"池化资源"技术产生 阅读全文
posted @ 2011-12-07 09:52 only_eVonne 阅读(430) 评论(0) 推荐(0) 编辑