как новичок у меня мало проблем при работе с libpcap в c ++.
Я стремлюсь скопировать содержимое «пакета» в другое место в памяти такого же размера, чтобы я мог работать с ним без помех.
Вот мой код:
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;
}
}
Других решений пока нет …