Voici 2 petits codes
pas trop optimisé, réécrit pour l'occasion. ça permet d'envoyer du texte entre un serveur et un client :
Bien-sur, pour que la connexion s'effectue a distance, vous devez cote serveur ouvrir votre port TCP. Dans l'exemple, il s'agit du port
6842
Pour ceux qui souhaitent tester en local, mettez comme adresse ip cote client
127.0.0.1
Coté serveur
Code : Tout sélectionner
;- Window Constants
Enumeration
#Window_0
EndEnumeration
;- gadgets Constants
Enumeration
#Server
#Editor_0
#String_0
#Button_0
EndEnumeration
pseudo$ = InputRequester("pseudo", "choisissez un pseudo", "Serveur")
If InitNetwork() = 0
MessageRequester("Erreur", "Impossible d'initialiser le réseau !", 0)
End
EndIf
Port = 6842 ; <--- port a ouvrir sur votre routeur en TCP
*Buffer = AllocateMemory(1000)
If CreateNetworkServer(#Server, Port) = 0
MessageRequester("Erreur", "Impossible de crée le serveur !", 0)
End
EndIf
MessageRequester("Serveur", "Serveur créé ( Port : "+Str(Port)+" TCP )", 0)
If OpenWindow(#Window_0, 0, 0, 330, 280, "Serveur", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
EditorGadget(#Editor_0, 10, 10, 310, 230, #PB_Editor_ReadOnly)
StringGadget(#String_0, 10, 250, 220, 20, "")
ButtonGadget(#Button_0, 240, 250, 80, 20, "Envoyer")
EndIf
Repeat
SEvent = NetworkServerEvent()
If SEvent
ClientID = EventClient()
Select SEvent
Case #PB_NetworkEvent_Connect ; verifie si un client se connecte
AddGadgetItem(#Editor_0, -1, "un client c'est connecter !!!", 0, 0)
Case #PB_NetworkEvent_Data ; verifie si un client envoie un message
length = ReceiveNetworkData(ClientID, *Buffer, 1000)
AddGadgetItem(#Editor_0, -1, PeekS(*Buffer, length, #PB_UTF8), 0, 0)
Case #PB_NetworkEvent_Disconnect ; verifie si un client se déconnecte
AddGadgetItem(#Editor_0, -1, "un client c'est déconnecter !!!", 0, 0)
EndSelect
EndIf
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget()
Case #Button_0 ; on appuie sur le button envoyer
SendNetworkString(ClientID, pseudo$+" : "+GetGadgetText(#String_0), #PB_UTF8) ; on envoie le message au client
AddGadgetItem(#Editor_0, -1, pseudo$+" : "+GetGadgetText(#String_0), 0, 0) ; on affiche le message dans l'editor
SetGadgetText(#String_0, "") ; on vide le string
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
CloseNetworkServer(#Server)
Coté client
Code : Tout sélectionner
;- Window Constants
Enumeration
#Window_0
EndEnumeration
;- gadgets Constants
Enumeration
#Server
#Editor_0
#String_0
#Button_0
EndEnumeration
pseudo$ = InputRequester("pseudo", "choisissez un pseudo", "Client")
If InitNetwork() = 0
MessageRequester("Erreur", "Impossible d'initialiser le réseau !", 0)
End
EndIf
IP$ = InputRequester("Information", "Entrez l'adresse IP du serveur :", "",0)
Port = 6842 ; <--- port a ouvrir sur votre routeur en TCP
*Buffer = AllocateMemory(1000)
ConnectionID = OpenNetworkConnection(IP$, Port)
If ConnectionID = 0
MessageRequester("Erreur", "Impossible de se connecter au serveur !", 0)
End
EndIf
If OpenWindow(#Window_0, 0, 0, 330, 280, "Client", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
EditorGadget(#Editor_0, 10, 10, 310, 230, #PB_Editor_ReadOnly)
StringGadget(#String_0, 10, 250, 220, 20, "")
ButtonGadget(#Button_0, 240, 250, 80, 20, "Envoyer")
AddGadgetItem(#Editor_0, -1, "connexion avec le serveur réussi !!!", 0, 0)
EndIf
Repeat
SEvent = NetworkClientEvent(ConnectionID)
If SEvent
Select SEvent
Case #PB_NetworkEvent_Data ; verifie si le serveur envoie un message
length = ReceiveNetworkData(ConnectionID , *Buffer, 1000)
AddGadgetItem(#Editor_0, -1, PeekS(*Buffer, length, #PB_UTF8), 0, 0)
Case #PB_NetworkEvent_Disconnect ; verifie si le serveur se deconnecte
AddGadgetItem(#Editor_0, -1, "le serveur c'est déconnecter !!!", 0, 0)
CloseNetworkConnection(ConnectionID)
EndSelect
EndIf
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget()
Case #Button_0 ; on appuie sur le button envoyer
SendNetworkString(ConnectionID, pseudo$+" : "+GetGadgetText(#String_0), #PB_UTF8) ; on envoie le message au serveur
AddGadgetItem(#Editor_0, -1, pseudo$+" : "+GetGadgetText(#String_0), 0, 0) ; on affiche le message dans l'editor
SetGadgetText(#String_0, "") ; on vide le string
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
CloseNetworkConnection(ConnectionID)
@++