[Resolu][network]Recevoir beaucoup de donnees

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

[Resolu][network]Recevoir beaucoup de donnees

Message 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 ?
Dernière modification par lepiaf31 le dim. 03/juin/2007 9:38, modifié 1 fois.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

il faut tester la valeur de resultat

Code : Tout sélectionner

Resultat = ReceiveNetworkData(ClientID, *Buffer, 1000)
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.
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.
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

EDIT : comtois ma grillé, ça solution est surement la bonne.
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Message 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
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message 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
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.
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Message par lepiaf31 »

C'est bon ca marche super merci
Répondre