Page 1 sur 1

ReceiveNetworkData, cas exceptionnel

Publié : dim. 09/oct./2005 21:15
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.

Publié : lun. 10/oct./2005 22:47
par djes
Tu as bon ;)

Publié : mar. 11/oct./2005 11:30
par LeCyb
Merci :)

Publié : mar. 11/oct./2005 18:37
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