ReceiveNetworkData
ReceiveNetworkData
.........................
Dernière modification par Backup le sam. 19/mars/2011 17:30, modifié 1 fois.
Re: ReceiveNetworkData [Resolu]
bon je me repond a moi meme 
voici ce qu'il faut faire pour ne pas avoir d'erreur ou de blocage de cette fonction :
Code retiré car non fiable !

voici ce qu'il faut faire pour ne pas avoir d'erreur ou de blocage de cette fonction :

Code retiré car non fiable !

- Le psychopathe
- Messages : 764
- Inscription : jeu. 03/mars/2005 19:23
Re: ReceiveNetworkData
Salut dobro,Dobro a écrit :une fois n'est pas coutume, j'ai besoin qu'on m'explique cette fonction !
je pensai que la forme standard d'utilisation de cette fonction etait :
Code : Tout sélectionner
*Buffer = AllocateMemory(taille) While ab<taille ab= ReceiveNetworkData(ConnectionID,*Buffer ,taille) b.S = b.S+PeekS(*Buffer,-1,#PB_UTF8 ) Wend FreeMemory(*Buffer)
Il me semble que tu fasses fausse route même avec ta réponse plus bas

Je te fais un code à l'arrache et je m'en vois désolé mais je n'ai pas pb sous lies yeux

Code : Tout sélectionner
Global taille = 1000
Global b.s
*Buffer = AllocateMemory(taille)
Procedure reception()
ab = taille
While ab=taille
ab= ReceiveNetworkData(ConnectionID,*Buffer ,taille)
If ab=taille
taille = taille + taille
*Buffer = ReAllocateMemory(*Buffer, taille)
EndIf
If ab = -1
ProcedureReturn (-1)
; sortie de procedure à faire
EndIf
Wend
b = PeekS(*Buffer,-1,#PB_UTF8 )
FreeMemory(*Buffer)
EndProcedure
Re: ReceiveNetworkData
.....................
Dernière modification par Backup le sam. 19/mars/2011 17:30, modifié 1 fois.
- Le psychopathe
- Messages : 764
- Inscription : jeu. 03/mars/2005 19:23
Re: ReceiveNetworkData
Je ne comprends pas pourquoi en divisant par dix cela fonctionne et pas autrement.
Par contre je ne peux pas de répondre sans voir un peu plus de code car dans tout mes programmes résseaux ( que je n'ai pas encore terminé) : je n'ai eu aucun problème de reception dans le buffer.
Donc cela m'intrigue ton code.
Par contre je ne peux pas de répondre sans voir un peu plus de code car dans tout mes programmes résseaux ( que je n'ai pas encore terminé) : je n'ai eu aucun problème de reception dans le buffer.
Donc cela m'intrigue ton code.

Re: ReceiveNetworkData
j'ai toujours cru que cette fonction est bloquante , j'envois généralement des packet de donnée à taille fixe , par exemple 1000 bytes , avec un flag sur 1 bit pour le type de message , suivi d'un integer pour la taille du message , si le message est plus grand que 1000 bytes , le reste du message sera recu au prochain appel de cette fonction.
et ca marche très bien.
et ca marche très bien.
Re: ReceiveNetworkData
A mon avis :Dobro a écrit :...
quoiqu'il en soit, il me semble que cette fonction (ReceiveNetworkData())
est tres tres tres mal foutue !
1. Tu devrais utiliser NetworkClientEvent(), çà évite d'être "bloqué" : on n'appelle ReceiveNetworkData() que s'il y a des données.
Code : Tout sélectionner
If NetworkClientEvent(ConnectionID) = #PB_NetworkEvent_Data
BytesRead = ReceiveNetworkData(ConnectionID, *Buffer, Buffer_Len)
...
EndIf
Code : Tout sélectionner
If Date() > LastDate + TimeOut
Break
EndIf