项目中软件通过TCP与PLC进行通信,传输数据超过1488 byte后,TCP会分包发送,而抓包工具只能抓取组合后的数据。
Recv函数修改:
std::vector<uint8_t> Receive(size_t size)
{
std::vector<uint8_t> buffer(size);
int count = 0;
while (size > count) {
auto len = recv(sockedFd, (char*)(buffer.data()+ count), size - count, 0);
count += len;
if (len < 0) {
//
}
if (len == 0) {
break;
}
}
if (size != count) {
//
}
return buffer;
}