ReceiveNetworkData, cas exceptionnel

Programmation d'applications complexes
LeCyb
Messages : 273
Inscription : dim. 26/déc./2004 20:49

ReceiveNetworkData, cas exceptionnel

Message par LeCyb »

Si je lis dans l'aide, cette fonction retourne le nombre d'octets reçus et si ce nombre est égal à la taille du buffer il reste des données.

Maintenant on va dire que l'on donne un buffer de 10 octets et qu'on reçoit 10 octets.
La fonction devrait renvoyer 10 puisqu'on a reçu 10 octets et selon l'aide y'a encore des données mais vu qu'on a déjà tout reçu au coup suivant la fonction devrait retourner 0.

Je suis dans le bon ou je délire ?

C'est important pour moi car je fais une allocation dynamique du buffer dans cette boucle.
Vive le thread-safe !
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Tu as bon ;)
LeCyb
Messages : 273
Inscription : dim. 26/déc./2004 20:49

Message par LeCyb »

Merci :)
Vive le thread-safe !
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Un petit extrait de code pour que tu soies plus sûr ;)

Code : Tout sélectionner

            requestlength.l = ReceiveNetworkData(ClientID, *buffer, 4096)

            If requestlength> 0                     ; Data To receive
             Gosub traite_requete
            ElseIf requestlength = 0                ; gracefull disconnect
             done = #True                            ; so close the socket
            Else
             error.l = WSAGetLastError_()
             If error=#WSAEWOULDBLOCK                ; whe are non-blocking so: no more data to read
              Delay(100)
              done = #True                            ; so close the socket
             ElseIf error<>0
Répondre