Network problème avec code
Publié : sam. 11/févr./2006 13:59
Quand le server envoit un message le client reçoit pas alors que l'inverse fonctionne ! Aidez moi svp.
Server :
client:
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