自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 资源 (11)
  • 收藏
  • 关注

转载 javascript性能优化

一、1.在JavaScript 中,数据存储位置可以对代码整体性能产生重要影响。有四种数据访问类型:直接量,变量,数组项,对象成员。它们有不同的性能考虑。2.直接量和局部变量访问速度非常快,数组项和对象成员需要更长时间。3.局部变量比域外变量快,因为它位于作用域链的第一个对象中。变量在作用域链中的位置越深,访问所需的时间就越长。全局变量总是最慢的,因为它们总是位于作用域链的最后一环。

2014-04-03 08:19:46 662 1

转载 apapche 性能优化

阿里云服务器入门配置CPU:1核内存:512M硬盘:20G带宽:1M系统:centos看到这个配置也基本干不了什么了。我用的是apache+php+wordpress+mysql做博客。用360的webscan做检测时发现服务器反应很慢,结果一看apache服务器把内存都吃掉了,swap也已经用满了。所以用到了apache 的MaxRequestsPerCh

2013-12-08 18:38:52 610

原创 sql server 2008 R2不能新建数据库

sql server 2008 不能新建数据库

2011-04-24 19:16:00 3892 4

原创 世界500强给应聘者的建议

<br />建议1:看到潜在的危险   <br /><br />埃森哲合伙人兼中国区总裁李纲认为,中国员工的不足之处主要表现在两方面,一是自信心不足,二是缺乏承受挫折的能力。这种状态对员工在跨国公司的成长很不利。在一个项目中,如果一个与你级别差不多的同事喜欢发表自己的意见,表现得比较有见识,那么他就会得到更多的关注。另外,我们很多年轻的国内同事独立能力、承受挫折的能力比较弱,一帆风顺时表现得很好,一碰到不顺心的事情,往往会弄得一团糟。   <br /><br />建议2:建立清晰的成才目标   <br />

2010-11-04 18:00:00 519

转载 23种设计模式

创建型模式   1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory   工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何

2010-05-08 12:32:00 445

八数码 优先队列 分支限界 不在位优先

随机给定一个3×3的矩阵,其元素为8个不同的数码,起始状态为S0,目标状态为Sg,要求用两种或以上的方法设计优先队列式分支限界法,寻找从初始状态变换到目标状态的最优解,说明不同的优先选择策略变换到最终状态用了多少步,并对获得的结果做出比较分析。最终状态均如Sg表示。

2011-05-04

八数码优先队列式分支限界C++ 移动次数最少优先

随机给定一个3×3的矩阵,其元素为8个不同的数码,起始状态为S0,目标状态为Sg,要求用两种或以上的方法设计优先队列式分支限界法,寻找从初始状态变换到目标状态的最优解,说明不同的优先选择策略变换到最终状态用了多少步,并对获得的结果做出比较分析。最终状态均如Sg表示。

2011-05-04

八数码问题 队列式分支限界法

随机给定一个3×3的矩阵,其元素为8个不同的数码,起始状态为S0,目标状态为Sg,要求用两种或以上的方法设计优先队列式分支限界法,寻找从初始状态变换到目标状态的最优解,说明不同的优先选择策略变换到最终状态用了多少步,并对获得的结果做出比较分析。最终状态均如Sg表示。

2011-05-04

编译原理 第5章习题解答

何炎祥编著的机械工业出版社出版的 编译原理第五章课后习题答案

2011-04-18

网络数据包捕获与应用的VC++6.0编程

网络数据包捕获与应用的VC++6.0编程 《网络数据包捕获与应用的VC++6.0编程》 美国GeneChiu基金资助 网络数据包捕获与应用的VC++6.0编程 研究生 方松茂 对以太帧头、IPv4报头、IPv6报头、TCP报头及UDP报头格式这几种常用数据报头 别利用WinPcap和原始套接字编写程序进行分析。并利用MFC类库,采用链表结构存放捕 获的网络数据的方案,实现了局域网内Internet数据采集的应用程序。 另外,还编写了一个利用WinPcap提供的发送数据报的函数实现SYN Flood的黑客攻 击程序。现对各程序简要介绍如下: 程序源代码如下: 程序1 利用WinPcap函数库函数解析捕获数据包的以太帧头 程序名:AnalyzeETH_WinPcap.CPP 程序名:AnalyzeETH_WinPcap.CPP 程序2 利用WinPcap函数库函数解析捕获的IPv4数据报包头 程序名:AnalyzeIPv4_WinPcap.CPP 程序名:AnalyzeIPv4_WinPcap.CPP 程序3 利用WinPcap函数库函数解析捕获的IPv6数据报包头 程序名:AnalyzeIPv6_WinPcap.CPP 程序名:AnalyzeIPv4_WinPcap.CPP 程序4 利用WinPcap函数库函数解析捕获的TCP数据报包头 程序名:AnalyzeTCP_WinPcap.CPP 程序名:AnalyzeTCP_WinPcap.CPP 程序5 利用WinPcap函数库函数解析捕获的UDP数据报包头 程序名:AnalyzeUDP_WinPcap.CPP 程序名:AnalyzeUDP_WinPcap.CPP 程序6 利用WinPcap函数库函数发送TCP SYN帧数据报,进行SYN洪水攻击 注意:本程序仅供学习参考,请不要在Internet网络上使用! 程序名:AnalyzeUDP_WinPcap.CPP 程序名:AnalyzeUDP_WinPcap.CPP 程序7 利用原始套接字捕获并解析IPv4数据包 程序名:AnalyzeIPv4_WINSOCK.CPP 程序名:AnalyzeIPv4_WINSOCK.CPP 《网络数据包捕获与应用的VC++6.0编程》--美国GeneChiu基金资助页码,1/8 http://210.40.7.188/E%27yan/09/032-fsm/index.asp 2009-4-22 程序8 利用原始套接字捕获并解析双协议栈下IPv6数据包 程序名:AnalyzeIPv6_WINSOCK.CPP 程序名:AnalyzeIPv6_WINSOCK.CPP 程序9 利用原始套接字捕获并解析TCP数据包 程序名:AnalyzeTCP_WINSOCK.CPP 程序名:AnalyzeTCP_WINSOCK.CPP 程序10 利用原始套接字捕获并解析UDP数据包 程序名:AnalyzeUDP_WINSOCK.CPP 程序名:AnalyzeUDP_WINSOCK.CPP 程序11 利用原始套接字发送TCP SYN帧,对目标主机进行SYN洪水攻击 程序名:SYNFlood_WINSOCK.CPP 注意:本程序仅供学习参考,请不要在Internet网络上使用! 程序名:SYNFlood_WINSOCK.CPP 程序12 采集局域网内若干台主机网络数据并分析网络流量的综合应用程序 可执行程序:LANSecrutiny.exe 程序运行情况: 程序主要源代码:LANScrutinyDlg.cpp 完整程序全部源代码:LANSecrutiny.rar 《网络数据包捕获与应用的VC++6.0编程》--美国GeneChiu基金资助页码,2/8 http://210.40.7.188/E%27yan/09/032-fsm/index.asp 2009-4-22 编说明如下: 1.结构体说明 在程序中,我们将要进行分析的各数据包头格式用结构体进行定义。这样便于 包的解析,使每个字段清楚易懂。 以太帧头格式结构体,共14个字节: typedef struct ether_header { unsigned char ether_dhost[6]; //目的MAC地址 unsigned char ether_shost[6]; //源MAC地址 unsigned short ether_type; //协议类型 }ETHHEADER,*PETHHEADER; IPv4报头格式结构体,共20个字节: typedef struct ipv4_header { unsigned char ver_ihl; //版本 (4 bits) + 首部长度 (4 bits) unsigned char tos; //服务类型 unsigned short tlen; //数据报总长度 unsigned short identification; //标识 unsigned short flags_fo; //标志 (3 bits) + 片偏移 (13 bits) unsigned char ttl; //生存时间 unsigned char proto; //协议 unsigned short crc; //首部校验和 u_char ip_src[4]; //源IP地址 u_char ip_dst[4]; //目的IP地址 }IPHEADER,*PIPHEADER; IPv6报头格式结构体,共40个字节: typedef struct ipv6_header { u_char ver_tf; //版本号(4 bit) u_char traffic; //优先级(8 bit) u_short label; //流标识(20 bit) u_char length[2]; //报文长度(16 bit) u_char next_header; //下一头部(8 bit) u_char limits; //跳数限制(8 bit) u_char Srcv6[16]; //源IPv6地址(128 bit) u_char Destv6[16]; //目的IPv6地址(128 bit) }IPv6_HEADER,*PIPv6_HEADER; TCP报头格式结构体,共20个字节: typedef struct tcp_header { 《网络数据包捕获与应用的VC++6.0编程》--美国GeneChiu基金资助页码,3/8 http://210.40.7.188/E%27yan/09/032-fsm/index.asp 2009-4-22 WORD SourPort; //源端口号 WORD DestPort; //目的端口号 DWORD SeqNo; //序号 DWORD AckNo; //确认序号 BYTE HLen; //首部长度(保留位) BYTE Flag; //标识(保留位) WORD Window; //窗口大小 WORD ChkSum; //校验和 WORD UrgPtr; //紧急指针 }TCPHEADER,*PTCPHEADER; UDP报头格式结构体,共8个字节: typedef struct udp_header { u_short sport; //源端口号 u_short dport; //目的端口号 u_short len; //数据报长度 u_short crc; //校验和 }UDPHEADER,*PUDPHEADER; 2.程序说明 程序1 利用WinPcap函数库函数解析捕获数据包的以太帧头 程序名:AnalyzeETH_WinPcap.htm 该程序通过利用WinPcap提供的捕获数据包函数,对网络中的数据包进行采集分析 WinPcap中提供的函数pcap_open_live()可以获取网络适配器,通过函数pcap_loop p,int cnt,pcap_handle dispatch_handle,u_char* user)直接深入到数据链路层进 获,将捕获的数据传到函数dispatch_handle(u_char *,const pcap_pkthdr *header,const *pkt_data)中,该函数的参数pkt_data指向的即是捕获的数据包。这样,我们可以捕 网内数据链路层的以太帧,并按照以太帧头格式对数据包进行解析,以获得以太帧头 关信息。同时将捕获数据存入磁盘中。通过该程序,可以分析出局域网内传输的各 数据包的情况。程序完整代码详见程序1(AnalyzeETH_WinPcap.CPP)。 程序2 利用WinPcap函数库函数解析捕获的IPv4数据报包头 程序名:AnalyzeIPv4_WinPcap.CPP 该程序同样通过WinPcap提供的函数,获取网络适配器,利用函数pcap_loop( p,int cnt,pcap_handle dispatch_handle,u_char* user)捕获数据包。并将捕获 dispatch_handle(u_char *,const pcap_pkthdr *header,const u_char *pkt_data 对以太帧包进行过滤,将以太帧头中协议类型字段(ether_type)中值为0x0800的 行解析,即可得到整个IPv4分组的信息,其中从IPv4数据报头开始的前20个字节为 包头信息字段。同时将解析出的相关数据字段存入磁盘中。通过该程序,可以分析局域 各主机的网络使用情况。程序完整代码详见程序2(AnalyzeIPv4_WinPcap.CPP)。 程序3 利用WinPcap函数库函数解析捕获的IPv6数据报包头 程序名:AnalyzeIPv6_WinPcap.CPP 《网络数据包捕获与应用的VC++6.0编程》--美国GeneChiu基金资助页码,4/8 http://210.40.7.188/E%27yan/09/032-fsm/index.asp 2009-4-22 由于WinPcap提供的函数可以深入到数据链路层去捕获数据包,因此无论是IPv4 包还是IPv6数据包都是被封装在以太帧头中,因此都能够被捕获。本程序利用WinPcap 供的函数,实现了过滤捕获并解析在纯IPv6环境或双协议栈环境下传输的IPv6数据包 获的数据包以太帧头中协议类型(ether_type)字段值为0x86DD,则该数据包为纯 境下传输的IPv6数据包,将随后的40个字节按照IPv6包头格式解析,即可得到IPv6 中携带的信息。对捕获的数据包进行过滤,在过滤出的IPv4数据包中分析IPv4包头 proto字段值为0x29的数据包即为双协议栈下IPv6数据包,于是将IPv4包头后的40个 节按照IPv6包头格式解析,即可得到IPv6包头中携带的信息。同样,解析过程都在函 dispatch_handle(u_char *,const pcap_pkthdr *header,const u_char *pkt_data if(eth_header->Etype[0]==0x86 && eth_header->Etype[1]==0xDD) { //纯IPv6环境下传输的IPv6数据包 } else if(eth_header->Etype[0]==0x08 && eth_header->Etype[1]==0x00) { if(ip_header->prote==0x29) { //双协议栈环境下传输的IPv6数据包 } } 该程序还进一步对IPv6中封装的TCP、ICMPv6、UDP包头进行了解析,其中TCP、 UDP包头格式与IPv4版本中的相同。 通过该程序,可以捕获不同网络环境下封装的IPv6数据包,并进行分析。完整代 见程序3(AnalyzeIPv6_WinPcap.CPP)。 程序4 利用WinPcap函数库函数解析捕获的TCP数据报包头 程序名:AnalyzeTCP_WinPcap.CPP 该程序通过利用WinPcap提供的函数pcap_loop(pcap_t* p,int cnt,pcap_handle dispatch_handle,u_char* user)将数据包捕获。并在dispatch_handle(u_char *,const *header,const u_char *pkt_data)中通过编写代码实现解析。由于pkt_data中存放的是整 太帧,因此只要将指针跳到TCP包头开始处,然后按照TCP包头格式解析就可以读出其中 信息。程序中在解析数据包的同时,将解析结果存放到磁盘文件中。该程序通过对 头的解析,并进行分析,可以推断网络中是否存在某些网络攻击行为。完整代码详见 (AnalyzeTCP_WinPcap.CPP)。 程序5 利用WinPcap函数库函数解析捕获的UDP数据报包头 程序名:AnalyzeUDP_WinPcap.CPP 该程序与AnalyzeTCP.CPP程序基本一样,通过利用WinPcap提供的函数pcap_loop (pcap_t* p,int cnt,pcap_handle dispatch_handle,u_char* user)将数据包捕 dispatch_handle(u_char *,const pcap_pkthdr *header,const u_char *pkt_data 实现解析。只要将指针改为跳到UDP包头开始处,然后按照UDP包头格式解析就可以 其中信息。程序中在解析数据包的同时,将解析结果存放到磁盘文件中。完整代码详见 5(AnalyzeUDP_WinPcap.CPP)。 程序6 利用WinPcap函数库函数发送TCP SYN帧数据报,进行SYN洪水攻击 程序名:SYNFlood_WinPcap.CPP 功能强大的WinPcap函数库不但能够捕获网络中的数据,还能利用它提供的函数 送自己构造数据链路层的数据报。因此,在本程序中,我们自己构造了一个SYN帧TCP 据报,并将其封装到我们自己构造的IP报头和以太帧头中,其中IP报头中的源IP地址 序中设为1.1.1.1)和以太帧头中的源MAC地址(程序中设为 《网络数据包捕获与应用的VC++6.0编程》--美国GeneChiu基金资助页码,5/8 http://210.40.7.188/E%27yan/09/032-fsm/index.asp 2009-4-22 0x00,0x00,0x00,0x00,0x00,0x00)都是伪造的不存在的地址。将大量请求联接的数 不断地发送到目标主机,而对方无法把回应数据报传回源主机,这样就实现了对主机 SYN洪水攻击了。程序中的关键在于,封装在数据报中的校验和必须正确,否则目标 不会做任何反映。因此,程序中实现了一个计算校验和的函数,用于计算IP报头和 头中的校验和字段。校验和函数代码如下: inline USHORT checksum(USHORT *buffer, int size) { unsigned long cksum=0; while(size >1) { cksum+=*buffer++; size -=sizeof(USHORT); } if(size ) cksum += *(UCHAR*)buffer; cksum = (cksum >> 16) + (cksum & 0xffff); cksum += (cksum >>16); return (USHORT)(~cksum); } 在计算IP校验和时,buffer中存放的是IP报头数据,而在计算TCP校验和时,buffer 中存放的是TCP伪头部和TCP头部数据。 将构造好的数据报通过函数pcap_sendqueue_queue(pcap_send_queue *squeue,struct pcap_pkthdr *pktheader,u_char *pktdata)放到发送队列中,再利用函数 pcap_sendqueue_transmit(pcap_t *outdesc, pcap_send_queue *squeue,int sync) 即可实现SYN Flood攻击。完整代码详见程序6(SYNFlood_WinPcap.CPP)。 程序7 利用原始套接字捕获并解析IPv4数据包 程序名:AnalyzeIPv4_WINSOCK.CPP 该程序通过使用原始套接字过滤并捕获IPv4数据包,并对捕获数据包进行解析 分为三部分,其中在函数InitWinsock2()内初始化Winsock2。在函数BindSocket 利用winsock2提供的函数WSASocket()建立套接字,由于只有原始套接字可以深入到 络层捕获数据包,因此WSASocket(int af,int type,int protocol,LPWSAPROTOCOL_INFO lpPorotocolInfo,GROUP g,DWORD dwFlags)中参数type要设为SOCK_RAW。因为是捕 IP数据包,参数protocol设为IPPROTO_IP。然后将套接字进行绑定。这样就可以对 行监听,捕获网络中的IPv4数据包了。在函数RecieveIPv4()函数中,对捕获的数 解析。完整代码详见程序AnalyzeIPv4_WINSOCK.CPP。 程序8 利用原始套接字捕获并解析双协议栈下IPv6数据包 程序名:AnalyzeIPv6_WINSOCK.CPP 该程序通过使用原始套接字过滤并捕获双协议栈下IPv6数据包,并对捕获数据包 解析。与程序AnalyzeIPv4_WINSOCK.CPP一样,本程序分为四部分,分别完成初始化套接 字,建立并绑定套接字,捕获数据包并分析。因为IPv6数据包封装在IPv4包头中, 接字按IPv4套接字的建立,即WSASocket(int af,int type,int protocol,LPWSAPROTOCOL_INFO lpPorotocolInfo,GROUP g,DWORD dwFlags)中参数 设为AF_INET,参数type要设为SOCK_RAW。因为是捕获IP数据包,参数protocol设为 IPPROTO_IP。完整代码详见程序AnalyzeIPv6_WINSOCK.CPP。 程序9 利用原始套接字捕获并解析TCP数据包 程序名:AnalyzeTCP_WINSOCK.CPP 《网络数据包捕获与应用的VC++6.0编程》--美国GeneChiu基金资助页码,6/8 http://210.40.7.188/E%27yan/09/032-fsm/index.asp 2009-4-22 该程序通过使用原始套接字过滤并捕获TCP数据包,并对捕获数据包进行解析。 序AnalyzeIPv4_WINSOCK.CPP一样,对套接字进行初始化、建立并绑定后,在RecieveTCP ()函数中获取TCP数据包字段,按照TCP包头格式解析,可获取完整的TCP数据包数 完整代码详见程序AnalyzeTCP_WINSOCK.CPP。 程序10 利用原始套接字捕获并解析UDP数据包 程序名:AnalyzeUDP_WINSOCK.CPP 该程序通过使用原始套接字过滤并捕获UDP数据包,并对捕获数据包进行解析。 序AnalyzeTCP_WINSOCK.CPP一样,对套接字进行初始化、建立并绑定后,在RecieveTCP ()函数中获取TCP数据包字段,按照TCP包头格式解析,可获取完整的TCP数据包数 完整代码详见程序AnalyzeUDP_WINSOCK.CPP。 程序11 利用原始套接字发送TCP SYN帧,对目标主机进行SYN洪水攻击 程序名:SYNFlood_WINSOCK.CPP 本程序利用原始套接字发送TCP数据包,对目标主机进行SYN Flood攻击。程序中函 数socket(AF_INET,SOCK_RAW,IPPROTO_IP);将套接字设为原始套接字。并通过函数 setsockopt(SOCKET s,int level,int optname,const char*optval,int optlen); IP_HDRINCL是IPPROTO_IP选项级别,若将IP_HDRINCL选项设为TRUE,发送函数会 将IPv4头包含在自己发送的数据前面,因此,在调用一个Winsock发送函数时,必须 据前面包含完整的IPv4头。与WinPcap不同的是,原始套接字只能深入到网络层,故只需 构造IPv4包头和TCP包头。将构造好的、计算出正确校验和的数据包放入缓冲区,通 (SOCKET s,const char *buf,int len,int flags,const struct sockaddr *to,int tolen 送,即达到攻击目的。 程序12 采集局域网内若干台主机网络数据并分析网络流量的综合应用程序 程序名:LANSecrutiny 本程序分为几个模块:探测局域网内运行主机;后台采用动态链表存放采集到所需的 网络数据;图示局域网及每台主机的网络流量随时间的折线变化;监听结束后多线 据存盘。 ? 探测局域网内运行主机 要对局域网内主机进行监听,采集其网络数据,首先必须知道局域网内正在运 机。为迅速获得主机是否处于运行状态的消息,只要向局域网内所有主机发送ARP数 并根据回应的数据报分析,即可得到答案。因为一局域网的网关和子网掩码是已知的 我们可以计算出这一局域网的IP地址范围。在本程序中,我们利用WinPcap提供的发 据报函数pcap_sendpacket(pcap_t *adhandle,unsigned char*sendbuf,int size) 发送自己构造的请求ARP数据报,捕获回应的ARP数据报并解析,即可获知网内运行主机 的MAC地址及IP地址。详细代码见程序13中LANSecrutinyDlg.CPP文件内SendARPtoGetIP ()函数。 利用此方法,可使该程序在不同网段使用,增强了程序的灵活性。 ? 采用动态链表存放采集到的网络数据 为使程序具有良好的伸缩性,能根据网络数据采集情况动态的分配内存,不致造成 存浪费或内存空间过小的情况发生。在本程序中,我们将采集的所需数据存放到链 函数dispatch_handle(u_char *,const pcap_pkthdr *header,const u_char *pkt_data 照前述几个程序中对数据报解析的方法,将捕获数据报个报头中的所需数据提取出 入一个链表节点中。然后将该存放完数据的节点插入到链表的结尾处。 本程序设计为可以将IPv4数据报数据和IPv6数据报数据存放如同一链表中,而 地址为32位,IPv6地址为128位。因此我们将节点中存放IP地址的元素设置为一个有 《网络数据包捕获与应用的VC++6.0编程》--美国GeneChiu基金资助页码,7/8 http://210.40.7.188/E%27yan/09/032-fsm/index.asp 2009-4-22 个元素的数组,将数组的第一个元素IPaddr[0]作为判断值。如果是IPv4数据报,则 的值为0,并将IPv4地址放入随后的4个元素中,如果是IPv6数据报,则IPaddr[0]的 1,并将IPv6地址放入随后的16个元素中。 由于ICANN为0~1023端口各命名了一个端口名。因此,我们在程序中,通过函数 getportname()为有端口名的端口查找其端口名,这样便进一步了解数据包的高层协议类 void getportname(int portn,char portch[],char *protocol) { if(getservbyport(htons(portn),protocol)!=NULL) { strcpy(portch,getservbyport(htons(portn),protocol)->s_name); } else sprintf(portch,"%d",portn); } 在该函数中,我们将捕获的端口号值portn和协议类型protocol传入,通过Winsock2 函数getservbyport()将找到的端口名传回给节点元素portch。 通过该程序将捕获的数据报中重要数据存放入链表中,我们可以清楚的了解被 机与外界交流的时间、类型以及对放地址等情况。完整代码详见程序LANSecrutiny dispatcher_handler()函数。 ? 采用多线程技术进行数据存盘 由于程序中我们设计成为每台被监听主机产生两根链表存放进、出数据,因此 主机进行监听时,会产生2*n条链表。为解决多条链表存盘问题,我们采用多线程技 样能使各条链表的存盘工作不相互影响,避免了由于一条链表在存盘过程中出现错误 后其它链表无法再进行存盘,从而造成采集数据的丢失。存盘时,我们将链表中一 贝到临时节点中,再进行保存,这样避免了存盘时由于某些原因造成对链表的破坏而影 盘工作。详细代码见程序LANSecrutiny中SavePacket()函数。 ? 图示网络流量 通过图示的方法,能使我们更快的了解网络流量状况。因此在程序中我们设计 个局域网机每台主机的网络流量图示。 在程序中,为将流量用折线方式绘制出来,我们设计了一个数组,用于存放流量 其中,第一个元素存放当前时间流量值,第二个元素存放前一秒流量值,以此类推 个元素存放n秒前流量。这样,在绘图时就能将不同时间的流量用折线连接起来。 在函数OnTimer()中加入以下代码: if(postion[0]>=360) postion[0]=358; for(i=125;i>0;i--) postion[i]=postion[i-1]; 在函数OnPaint()中加入以下代码: for(i=0;i<125;i++) { MoveToEx(hdc,15+i*5,385-postion[i],NULL); LineTo(hdc,15+(i+1)*5,385-postion[i+1]); } 完整代码详见程序LANSecrutiny中AnalyzeDlg.CPP内各函数。 以上程序还有很多不足之处,恳请指正。谢谢! http://210.40.7.188/E%27yan/09/032-fsm/index.asp

2011-04-14

COM分布式披萨预订系统

C++ mfc实现的com的分布式披萨预订系统 注册服务端 多客户端访问

2011-04-14

有限缓冲区生产者消费者和读进程优先的读者写者问题

linux c环境下的有限缓冲区的生产者消费者和读者写者问题的实现

2010-12-14

操作系统 精髓与设计 第五版 课后答案

操作系统精髓与设计原理(第五版,电子工业出版社,陈渝翻译)课后习题答案

2010-11-16

mvc step by step

本书详细从浅入深,一步一步讲解了在visual studio基础上以mvc开发asp.net的详细过程

2010-10-19

搜索引擎技术原理(pdf)

本书以北大天网为例,详细介绍了搜索引擎的原理及开发过程,方便对搜索引擎感兴趣的人了解

2010-10-19

计算组成原理答案(唐朔飞,第二版)

这是唐朔飞的计算机组成原理第二版的课后习题答案,很详细 ppt格式

2010-05-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除