Page 1 sur 1
[Resolu][network]Recevoir beaucoup de donnees
Publié : sam. 02/juin/2007 21:53
par lepiaf31
salut a vous,
je voudrais que le serveur envoi une chaîne de caractères au client. Jusque la pas de problème. Mais la chaine de caractere en question est tres longue et quand le client recoit les donnees, il n'affiche pas toute la chaine. Comment faire pour recevoir toute la chaine ?
Publié : sam. 02/juin/2007 22:01
par comtois
il faut tester la valeur de resultat
Resultat indique la longueur des données reçues, si Resultat est égal à la taille du buffer c'est qu'il y a encore des données à récupérer, il faut boucler.
Publié : sam. 02/juin/2007 22:01
par wolfjeremy
EDIT : comtois ma grillé, ça solution est surement la bonne.
Publié : dim. 03/juin/2007 9:02
par lepiaf31
J(ai realisé cette boucle mais je ne recoit toujours pas toute la chaine:
Code : Tout sélectionner
Case #PB_NetworkEvent_Data
BufferSize = 2000
*Buffer = AllocateMemory(BufferSize)
Resultat = ReceiveNetworkData(Connexion, *Buffer, BufferSize)
String$ = PeekS(*Buffer)
FreeMemory(*Buffer)
While Resultat = BufferSize
*Buffer = AllocateMemory(BufferSize)
Resultat = ReceiveNetworkData(Connexion, *Buffer, BufferSize) ;
If Resultat ;si la reception a reussit
String$ + PeekS(*Buffer)
FreeMemory(*Buffer)
EndIf
Wend
Publié : dim. 03/juin/2007 9:14
par comtois
j'ai bricolé l'exemple server de l'aide de PB pour tester rapidement.
Le fichier client n'a pas changé.
Code : Tout sélectionner
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
Port = 6832
TailleBuffer = 10
*Buffer = AllocateMemory(TailleBuffer)
If CreateNetworkServer(0, Port)
MessageRequester("PureBasic - Server", "Server created (Port "+Str(Port)+").", 0)
Repeat
SEvent = NetworkServerEvent()
If SEvent
ClientID = EventClient()
Select SEvent
Case 1
MessageRequester("PureBasic - Server", "A new client has connected !", 0)
Case 2
MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" has send a packet !", 0)
Chaine$=""
Repeat
Resultat = ReceiveNetworkData(ClientID, *Buffer, TailleBuffer)
If Resultat>0
Chaine$ + PeekS(*Buffer,Resultat)
EndIf
Until Resultat<TailleBuffer
MessageRequester("Info", "String: "+chaine$, 0)
Case 3
MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" has send a file via the network !", 0)
ReceiveNetworkFile(ClientID, "C:\TEST_Network.ftp3")
Case 4
MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" has closed the connexion...", 0)
Quit = 1
EndSelect
EndIf
Until Quit = 1
MessageRequester("PureBasic - Server", "Click to quit the server.", 0)
CloseNetworkServer(0)
Else
MessageRequester("Error", "Can't create the server (port in use ?).", 0)
EndIf
End
Publié : dim. 03/juin/2007 9:38
par lepiaf31
C'est bon ca marche super merci