gpt4 book ai didi

c++ - Memcpy 和使用 pcap 的内存管理

转载 作者:行者123 更新时间:2023-11-30 04:19:55 24 4
gpt4 key购买 nike

作为初学者,我在使用 C++ 处理 libpcap 时遇到了一些麻烦。我的目标是将“数据包”的内容复制到内存中大小相同的另一个位置,这样我就可以不受干扰地使用它。

这是我的代码:

 string content;
packet = pcap_next(descr, &header);
char *packet_copy = malloc(header.len);
memcpy(packet_copy, packet, header.len);
for (int i=0; i < (int) header.len; i++) {
if (isprint(packet[i])) content += packet_copy[i];
}

当然,这是行不通的。有什么帮助吗?谢谢!

最佳答案

这很适合我:

#include <string>
#include <algorithm>
#include <iterator>
#include <pcap/pcap.h>

static pcap_t* descr = nullptr;
static pcap_pkthdr header;

int main()
{
std::string content;
auto packet = pcap_next(descr, &header);

// append raw data
content.append(packet, packet + header.len);

// append printables only
std::copy_if(packet, packet+header.len, std::back_inserter(content),
[](u_char ch) { return std::isprint(ch); });

// for C++0x challenged compilers:
for (u_char const* it=packet; it != packet + header.len; ++it)
{
if (isprint(*it)) content += *it;
}
}

关于c++ - Memcpy 和使用 pcap 的内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15499206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com