Voici un petit chat pour 2 personnes que je viens de faire, à mon avis il y a des bug mais avec un truc faut en 40min, ça parait normal. On peut tester même sans réseau, il suffit de rentrer son ip
Code source du Serveur
Code : Tout sélectionner
If InitNetwork() = 0 : MessageRequester("Erreur","Ne peut pas créer utiliser les fonctions réseau.",#MB_ICONError) : End :EndIf
;- Declarations
; Constantes
#Principale = 0
Enumeration ; Gadgets
#Recu
#Envoyer
#Envoi
EndEnumeration
; Mémoires
*Reception.l = AllocateMemory(2500)
; Variables
DefType.b Sortie,Event
DefType.l ServeurID,ClientID
Eol.s = Chr(13) + Chr(10)
; Creation du serveur
ServeurID = CreateNetworkServer(6235)
If ServeurID = 0 : MessageRequester("Erreur","Ne peut pas créer le serveur",#MB_ICONError) : End : EndIf
; Creation de la fenêtre
If OpenWindow(#Principale,0,0,400,500,#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered,"Mini-Chat Serveur")
If CreateGadgetList(WindowID(#Principale))
EditorGadget(#Recu,5,5,390,435)
EditorGadget(#Envoi,5,445,295,50)
ButtonGadget(#Envoyer,305,445,90,50,"ENVOYER")
EndIf
EndIf
;- Boucle Principale
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Sortie = 1
Case #PB_EventGadget
Select EventGadgetID()
Case #Envoyer
If ClientID > 0
SendNetworkString(ClientID,GetGadgetText(#Envoi))
SetGadgetText(#Recu,GetGadgetText(#Recu) + Eol + Eol + "Serveur dit:" + Eol + GetGadgetText(#Envoi))
SetGadgetText(#Envoi,"")
Else
MessageRequester("Dommage","Tu ne peux pas envoyer car tu n'as pas d'amis.")
EndIf
EndSelect
EndSelect
Event = NetworkServerEvent()
If Event
Select Event
Case 1 ; Connection d'un client
MessageRequester("Bonjour","Un client vient de se connecter.")
ClientID = NetworkClientID()
Case 2
FreeMemory(*Reception)
*Reception = AllocateMemory(2500)
ReceiveNetworkData(NetworkClientID(),*Reception,2500) ; On aurait pu mettre ClientID à la place de NetworkClientID()à
SetGadgetText(#Recu,GetGadgetText(#Recu) + Eol + Eol + "Client dit :" + Eol + PeekS(*Reception))
Case 4
MessageRequester("Aurevoir","Un client est partit")
ClientID = 0
EndSelect
EndIf
Until Sortie = 1
Code source du client
Code : Tout sélectionner
If InitNetwork() = 0 : MessageRequester("Erreur","Ne peut pas créer utiliser les fonctions réseau.",#MB_ICONError) : End :EndIf
;- Declarations
; Constantes
#Principale = 0
Enumeration ; Gadgets
#Recu
#Envoyer
#Envoi
EndEnumeration
; Mémoires
*Reception.l = AllocateMemory(2500)
; Variables
DefType.b Sortie,Event
DefType.l ServeurID
Eol.s = Chr(13) + Chr(10)
; Connection au serveur
ServeurID = OpenNetworkConnection("250.250.250.250",6235) ; Mettre votre adresse IP
If ServeurID = 0 : MessageRequester("Erreur","Ne peut pas se connecter au serveur.",#MB_ICONError) : End : EndIf
; Creation de la fenêtre
If OpenWindow(#Principale,0,0,400,500,#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered,"Mini-Chat Client")
If CreateGadgetList(WindowID(#Principale))
EditorGadget(#Recu,5,5,390,435)
EditorGadget(#Envoi,5,445,295,50)
ButtonGadget(#Envoyer,305,445,90,50,"ENVOYER")
EndIf
EndIf
;- Boucle Principale
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Sortie = 1
Case #PB_EventGadget
Select EventGadgetID()
Case #Envoyer
SendNetworkString(ServeurID,GetGadgetText(#Envoi)) ; Envoi le texte.
SetGadgetText(#Recu,GetGadgetText(#Recu) + Eol + Eol + "Client dit:" + Eol + GetGadgetText(#Envoi))
SetGadgetText(#Envoi,"")
EndSelect
EndSelect
Event = NetworkClientEvent(ServeurID)
If Event
Select Event
Case 2 ; reception de datas
FreeMemory(*Reception) ; Cette ligne et la ligne du dessous,
*Reception = AllocateMemory(2500) ; on vide le buffer.
ReceiveNetworkData(ServeurID,*Reception,2500) ; On aurait pu mettre ClientID à la place de NetworkClientID()à
SetGadgetText(#Recu,GetGadgetText(#Recu) + Eol + Eol + "Serveur dit:" + Eol + PeekS(*Reception))
EndSelect
EndIf
Until Sortie = 1