我正在尝试从 HTTP 流中提取图像。libpcap
除了捕获数据包外,我需要使用 C++ 而没有其他库。这是我正在做的事情:
if ((tcp->th_flags & TH_ACK) != 0) {
i = tcp->th_ack;
const char *payload = (const char *) (packet + SIZE_ETHERNET + size_ip + size_tcp);
size_payload = ntohs(ip->ip_len) - (size_ip + size_tcp);
std::string temp(payload);
dict.insert(std::pair<u_int,std::string>(tcp->th_ack,temp));
}
然后我连接所有具有相同 ACK 号的数据包:
std::string ss;
for(itt=dict.begin(); itt!= dict.end(); ++itt) {
std::string temp((*itt).second);
ss.append(temp);
}
std::ofstream file;
file.open("image.jpg", std::ios::out | std::ios::binary)
file << ss;
file.close();
现在,当我写入ss
文件时,文件的大小远小于传输的图像。这是编写二进制文件的正确方法吗?
我正在尝试在 C++中执行此操作