typedef struct _Node
{
int data_len; // 存储在节点中的数据长度
char *data; // 存储在节点中的数据
struct _Node *next; // 队列中的下一个节点地址
}NODE;
typedef struct _Queue
{
NODE *head; // 队列的头部
NODE *end; // 队列的尾部
int count; // 队列长度
}QUEUE;
bool InitQueue( QUEUE *queue )
{
if( NULL == queue )
{
return false;
}
queue->head = NULL;
queue->end = NULL;
queue->count = 0;
return true;
}
// 在队列中插入节点
bool Enqueue( QUEUE *queue, char *queue_data, int data_len )
{
if( NULL == queue || NULL == queue_data )
{
return false;
}
// 开辟新节点
NODE *new_node = (NODE *)malloc( sizeof(NODE) );
if( NULL == new_node )
{
return false;
}
// 开辟空间存储数据
new_node->data = (char *)malloc( data_len );
if( NULL == new_node->data )
{
return false;
}
memcpy( new_node->data, queue_data, data_len );
new_node->next = NULL;
new_node->data_len = data_len;
// 如果队列为空,则新节点即是头部,也是尾部
if( queue->head == NULL )
{
queue->head = new_node;
queue->end = new_node;
}
else
{
// 如果队列不为空,将此节点连接到队列的尾部
queue->end->next = new_node;
// 队列新尾部指向此节点
queue->end = new_node;
}
queue->count ++;
return true;
}
// 从队列中读出一个节点
NODE *Dequeue( QUEUE *queue )
{
if( NULL == queue )
{
return NULL;
}
// 如果队列为空,则无数据可从数列读出,直接返回
if( NULL == queue->head )
{
return NULL;
}
// 保存队列首节点
NODE *node_tmp = queue->head;
// 将首节点的下一个节点(第二个节点)设置为首节点,即删除了首节点
queue->head = node_tmp->next;
// 如果新首节点为空,则队列为空
if( NULL == queue->head )
{
queue->end = NULL;
}
queue->count --;
return node_tmp;
}
// 释放队列所有内存
void FreeQueue( QUEUE *queue )
{
if( queue )
{
return;
}
NODE *tmp_node1 = queue->head;
while( tmp_node1 )
{
NODE *tmp_node2 = tmp_node1;
free( tmp_node1->data );
free( tmp_node1 );
tmp_node1->data = NULL;
tmp_node1 = NULL;
tmp_node1 = tmp_node2->next;
}
}
分享到:
相关推荐
标题中的“抓包程序源代码c++.rar”指的是一个使用C++编程语言编写的网络数据包捕获(或称为“抓包”)程序的源代码压缩包。抓包程序是网络分析工具,允许用户查看通过网络传输的数据包,这对于网络故障排查、性能...
"libpcap-MT多线程抓包处理包" 指的是一个利用libpcap库,并采用多线程技术来实现同时抓取和处理网络数据包的程序。这里的“MT”代表多线程(Multi-Threaded),意味着程序使用了并发处理以提高性能。 **描述详解:...
3. **数据包解析**:抓包程序需要理解TCP/IP协议栈,包括IP、TCP/UDP等协议头的结构,以便正确解析和展示数据包内容。 4. **ACCESS数据库操作**:使用JDBC(Java Database Connectivity)API与ACCESS数据库交互,...
【计算机网络抓包课程设计报告】 本报告主要探讨了如何实现一个网络流量解析程序,该程序能够处理由“Windump –W”工具抓取的二进制流量文件,并从中提取关键的IP报文信息,包括时间戳、源IP、目的IP和高层协议等...
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的...
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的...
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的...
Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...
Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...
Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的...
Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...
Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...
Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...
Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...
Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...
Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...
Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...
Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...
Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式...