Buffer

cs_coins Messages postés 12 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 20 avril 2004 - 20 avril 2004 à 19:22
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 20 avril 2004 à 19:39
Bonjour a tous,
J'ai utilise le fonction recv () pour recupere de message de
socket, mais, le probleme est , si la taille de message superieur que la taille de buffer , comment on peut recupere
le message correctement ? (sans augmenter la taille de buffer);

voici ce que j'ai fais dans mon fonction

while( (!lRecBuf[0]) &&(lReturn==0)&&(bControl=true))
{
WriteTrace(TraceInfo, _T("CSMTPPOPDB::Process while( !lRecBuf[0] )"));
lReturn = recv( to_server_socket, lRecBuf, 1024, 0 );

if(lReturn==SOCKET_ERROR)
{
int lError=WSAGetLastError();
if (lError == WSAEWOULDBLOCK)
{
Sleep(100);
lReturn = 0;
}
}
else
{
lRecBuf[lReturn] = '\0';
*pResult="";
*pResult+=lRecBuf;
}
}

Merci avance!!!

1 réponse

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
20 avril 2004 à 19:39
je ne pense pas que tu puisse tout récupérer dans un buffer trop petit; augmente la taille de ton buffer de facon dynamique tant que recv retourne SOCKET_ERROR et que WSAGetLastError() donne WSAEMSGSIZE
0
Rejoignez-nous