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 ?
[Resolu][network]Recevoir beaucoup de donnees
-
- Messages : 510
- Inscription : dim. 25/mars/2007 13:44
- Localisation : Toulouse, France
- Contact :
[Resolu][network]Recevoir beaucoup de donnees
Dernière modification par lepiaf31 le dim. 03/juin/2007 9:38, modifié 1 fois.
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.
Code : Tout sélectionner
Resultat = ReceiveNetworkData(ClientID, *Buffer, 1000)
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
-
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52
-
- Messages : 510
- Inscription : dim. 25/mars/2007 13:44
- Localisation : Toulouse, France
- Contact :
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
j'ai bricolé l'exemple server de l'aide de PB pour tester rapidement.
Le fichier client n'a pas changé.
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
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.