Salut,
Après plusieurs jours de recherche, j'ai finalement pu trouver la source de mon erreur.
int WINAPI MyRecv(SOCKET s, char* buff, int len, int flags) {
#pragma warning(disable:4996)
int nBytes = RealRecv(s, buff, len, flags);
sockaddr_in peeraddr;
int size = sizeof(peeraddr);
getpeername(s, (struct sockaddr*)&peeraddr, &size);
std::string ip = inet_ntoa(peeraddr.sin_addr);
if (
ip.compare("34.252.21.81") == 0 ||
ip.compare("52.17.231.202") == 0 ||
ip.compare("63.34.214.78") == 0
) {
PipeManager::GetInstance()->send(buff, nBytes);
}
return nBytes;
}
Dans mon MyRecv ( qui est un hook du recv de winsock ), lors de mon PipeManager send j'avais spécifié comme taille du buffer à lire le len en argument du MyRecv plutôt que le retour du nombre de bytes lu par la vrai fonction Recv de winsock.
Ce qui avait pour effet de m'envoyer des buffer avec une drôle de taille.
Maintenant je récupère bien côté NodeJS les messages réseau qui transite.
Bonne journée à vous !