Page 1 sur 1

Network problème avec code

Publié : sam. 11/févr./2006 13:59
par Le psychopathe
Quand le server envoit un message le client reçoit pas alors que l'inverse fonctionne ! Aidez moi svp.


Server :

Code : Tout sélectionner

InitNetwork() 

Eol.s = Chr(13) + Chr(10) 
SEvent.l 
DataLength.l = 2000 

*Buffer = AllocateMemory(2000) 

Global ClientID.l 
Global DataLength 
Global ThID.l 
Global Eol 
Global *Buffer 

Procedure SReceiveData(value.b) 
  Repeat 
    DataLength = ReceiveNetworkData(ClientID, *Buffer, 2000) 
  Until DataLength <> 2000 
  MessageRequester("Server...", "Vous avez ressu un message : " + Eol + PeekS(*Buffer), 0) 
  KillThread(ThID) 
EndProcedure 

If CreateNetworkServer(120) 
  OpenWindow(0, 0, 0, 140, 90, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget, "Server") 
  CreateGadgetList(WindowID(0)) 
    ButtonGadget(0, 10, 10, 120, 30, "Envoier un fichier") 
    ButtonGadget(1, 10, 50, 120, 30, "Envoier un message") 

  Repeat 
  
    Select WindowEvent() 
      Case #PB_Event_CloseWindow 
        End 
        
      Case #PB_Event_Gadget 
        Select EventGadgetID() 
          Case 0 
            If ClientID <> 0 
              SendNetworkFile(ClientID, OpenFileRequester("Envoi d'un fichier : ", "", "Fichier text | *.txt" , 0)) 
            Else 
              MessageRequester("Server...", "Aucun client n'est connecté.", 0) 
            EndIf 
          
          Case 1 
            If ClientID <> 0 
              SendNetworkString(ClientID, InputRequester("Envoi d'un message", "Ecrivez votre message : ", "")) 
            Else 
              MessageRequester("Server...", "Aucun client n'est connecté.", 0) 
            EndIf 
            
        EndSelect 
    EndSelect 
    
    SEvent = NetworkServerEvent() 
    If SEvent 
      ClientID = NetworkClientID() 
      
      Select SEvent 
      
        Case 1 
          MessageRequester("Server...", "Un client s'est connecté.", 0) 
        
        Case 2    
          FreeMemory(0) 
          *Buffer = AllocateMemory(2000) 
          DataLength = ReceiveNetworkData(ClientID, *Buffer, 2000) 
          ThID = CreateThread(@SReceiveData(), #Null) 
            
        Case 3 
          ReceiveNetworkFile(ClientID, SaveFileRequester("Envoi d'un fichier : ", "", "Fichier text | *.txt;" , 1)) 
        
        Case 4 
          MessageRequester("Server...", "Un client s'est déconnecté.", 0) 
      
      EndSelect 
    EndIf 
  
  ForEver 
Else 
  MessageRequester("Erreur...", "Impossible de créer le server.", 0) 
EndIf 


client:

Code : Tout sélectionner

InitNetwork() 

Eol.s = Chr(13) + Chr(10) 
DataLength.l = 2000 
CEvent.l 

*Buffer = AllocateMemory(2000) 

Global ConID.l 
Global DataLength 
Global ThID.l 
Global Eol 
Global *Buffer 

Procedure CReceiveData(value.b) 
  Repeat 
    DataLength = ReceiveNetworkData(ConID, *Buffer, 2000) 
  Until DataLength <> 2000 
  MessageRequester("Client...", "Vous avez ressu un message : " + Eol + PeekS(*Buffer), 0) 
  KillThread(ThID) 
EndProcedure 

ConID = OpenNetworkConnection("000.000.0.0", 120) 
If ConID 
  OpenWindow(0, 150, 0, 140, 90, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget, "Client") 
  CreateGadgetList(WindowID(0)) 
    ButtonGadget(0, 10, 10, 120, 30, "Envoier un fichier") 
    ButtonGadget(1, 10, 50, 120, 30, "Envoier un message") 
  
  Repeat 
  
    Select WindowEvent() 
      Case #PB_Event_CloseWindow 
        End 
      Case #PB_Event_Gadget 
        Select EventGadgetID() 
          Case 0 
            SendNetworkFile(ConID, OpenFileRequester("Envoi d'un fichier : ", "", "Fichier text | *.txt" , 0)) 
            
          Case 1 
            SendNetworkString(ConID, InputRequester("Envoi d'un message", "Ecrivez votre message : ", "")) 
            
        EndSelect 
    EndSelect 
      
    CEvent = NetworkClientEvent(ConID) 
    
    If CEvent  
      Select CEventa 
        
        Case 2 
          FreeMemory(0) 
          *Buffer = AllocateMemory(2000) 
          DataLength = ReceiveNetworkData(ConID, *Buffer, 2000) 
          ThID = CreateThread(@CReceiveData(), #Null) 
          
        Case 3 
          ReceiveNetworkFile(ConID, SaveFileRequester("Envoi d'un fichier : ", "", "Fichier text | *.txt;" , 1)) 
      
      EndSelect 
    EndIf 
  
  ForEver 
Else 
  MessageRequester("Erreur...", "Impossible de se connecter au server.", 0) 
EndIf 

Publié : sam. 11/févr./2006 14:23
par CameleonTH
Ton erreur est que tu as mis 2 fois
DataLength = ReceiveNetworkData(ConID, *Buffer, 2000)
tu la mis une fois dans la procedure CReceiveData et une fois dans la case 2 donc enleve celle de la case 2.

Code : Tout sélectionner


InitNetwork()

Eol.s = Chr(13) + Chr(10)
DataLength.l = 2000
CEvent.l

*Buffer = AllocateMemory(2000)

Global ConID.l
Global DataLength
Global ThID.l
Global Eol
Global *Buffer

Procedure CReceiveData(value.b)
  Repeat
    DataLength = ReceiveNetworkData(ConID, *Buffer, 2000)
  Until DataLength <> 2000
  MessageRequester("Client...", "Vous avez ressu un message : " + Eol + PeekS(*Buffer), 0)
  KillThread(ThID)
EndProcedure

ConID = OpenNetworkConnection("127.0.0.1", 120)
If ConID
  OpenWindow(0, 150, 0, 140, 90, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget, "Client")
  CreateGadgetList(WindowID(0))
    ButtonGadget(0, 10, 10, 120, 30, "Envoier un fichier")
    ButtonGadget(1, 10, 50, 120, 30, "Envoier un message")
 
  Repeat
 
    Select WindowEvent()
      Case #PB_Event_CloseWindow
        End
      Case #PB_Event_Gadget
        Select EventGadgetID()
          Case 0
            SendNetworkFile(ConID, OpenFileRequester("Envoi d'un fichier : ", "", "Fichier text | *.txt" , 0))
           
          Case 1
            SendNetworkString(ConID, InputRequester("Envoi d'un message", "Ecrivez votre message : ", ""))
           
        EndSelect
    EndSelect
     
    CEvent = NetworkClientEvent(ConID)
   
    If CEvent  
      Select CEvent
       
        Case 2
          FreeMemory(0)
          *Buffer = AllocateMemory(2000) 
          ThID = CreateThread(@CReceiveData(), #Null)
         
        Case 3
          ReceiveNetworkFile(ConID, SaveFileRequester("Envoi d'un fichier : ", "", "Fichier text | *.txt;" , 1))
     
      EndSelect
    EndIf
 
  ForEver
Else
  MessageRequester("Erreur...", "Impossible de se connecter au server.", 0)
EndIf 

Publié : sam. 11/févr./2006 14:49
par Le psychopathe
Ok merci je regarde cela de suite.