gpt4 book ai didi

C++ 异常抛出 : read access violation

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

我正在使用 Visual Studio 2017 和 PcapPlusPlus。我希望我的应用程序打印 http 数据包的特定 header (例如用户代理),然后丢弃具有特定值的包(但我没有达到丢弃部分)。当我编译我的代码时它工作正常但是当我向某个站点发出请求时它打印例如“user-agent whatever”然后向我抛出异常:读取访问冲突。**这是 0x58。我是 c++ 和 visual studio 的新手,所以我不知道那个异常是什么意思。我该如何解决这个问题?这是我的代码:

#include "stdlib.h"
#include "PcapLiveDeviceList.h"
#include "PlatformSpecificUtils.h"
#include "Packet.h"
#include "TcpLayer.h"
#include "HttpLayer.h"
struct PacketStats
{
void consumePacket(pcpp::Packet& packet)
{
pcpp::HttpRequestLayer* httpRequestLayer = packet.getLayerOfType<pcpp::HttpRequestLayer>();
if (packet.isPacketOfType(pcpp::HTTP))
printf("HTTP,%s\n",httpRequestLayer->getFieldByName(PCPP_HTTP_USER_AGENT_FIELD)->getFieldValue().c_str());
}
};
static void onPacketArrives(pcpp::RawPacket* packet, pcpp::PcapLiveDevice* dev, void* cookie)
{
PacketStats* stats = (PacketStats*)cookie;
pcpp::Packet parsedPacket(packet);
stats->consumePacket(parsedPacket);
}
int main(int argc, char* argv[])
{
std::string interfaceIPAddr = "192.168.0.249";
pcpp::PcapLiveDevice* dev = pcpp::PcapLiveDeviceList::getInstance().getPcapLiveDeviceByIp(interfaceIPAddr.c_str());
if (dev == NULL)
{
printf("Cannot find interface with IPv4 address of '%s'\n", interfaceIPAddr.c_str());
exit(1);
}
if (!dev->open())
{
printf("Cannot open device\n");
exit(1);
}
PacketStats stats;
pcpp::PortFilter portFilter(80, pcpp::SRC_OR_DST);
pcpp::ProtoFilter protocolFilter(pcpp::TCP);
pcpp::AndFilter andFilter;
andFilter.addFilter(&portFilter);
andFilter.addFilter(&protocolFilter);
dev->setFilter(andFilter);
printf("\nStarting packet capture with a filter in place...\n");
dev->startCapture(onPacketArrives, &stats);
PCAP_SLEEP(10);
dev->stopCapture();
dev->close();
}

最佳答案

我没有以这种身份使用 C++,但我有一些想法。首先,您遇到“读取访问冲突”。我会想阅读无效的内存。其次,它告诉您“this”指针是 0x58。这是一个非常小的数字,接近 0x0。您很可能会取回一个空指针,并在其他地方使用它。

可能是 httpRequestLayer 或您在 consumePacket 中的调用链中的其他东西返回 null?

关于C++ 异常抛出 : read access violation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51226127/

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