Bonjour,

Je développe un serveur UDP en utilisant les fonctions WSA* de la lib winsock.

Après avoir créer la socket (WSASocket) et la binder comme il faut, je suis face à un problème concernant la fonction WSARecvFrom, voici son implémentation :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
WSARecvFrom(
                    sock_,
                    &dataBuff,
                    1,
                    &bytesRecv,
                    &flags,
                    (SOCKADDR *)&senderAddr,
                    &senderAddrSize,
                    &overLapped,
                    NULL
                   );
Le problème vient de la valeur de retour, j'obtiens constamment le code erreur WSAENOBUFS (10055) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
No buffer space available.
An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.
Or, je pense avoir bien déclaré le buffer de réception (dataBuff) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
WSABUF dataBuff;
const int buffLen = DATA_SIZE;
char buff[DATA_SIZE];
 
dataBuff.len = buffLen;
dataBuff.buf = buff;
J'ai lu quelque part que cette erreur apparaissait si le port bindé dépassé la valeur 5000 mais j'utilise le port 1234 et même résultat...

Merci pour votre patience et de l'aide que vous pourrez m'apporter.