et toto ce qui est envoyer
A+
scaraber
*********************************************************
* Le Serveur *
*********************************************************
;Déclaration des variables globales
InitNetwork () ; initialisation de la bilbiothèque du réseau
Global x, y, mode.s, IP.s, cnxID,clicli,clie,messg$,packet2.s
Declare Recievedata()
Declare Senddata()
Dim msg.s(1,15)
Dim pos(6,50)
clicli=2
nbm=1
nbd=1
port=22
ssbloc.s= ""
Port = Val ( InputRequester ( "port" , "choissiser le port du server" , "22" ))
CreateNetworkServer (Port)
Enumeration
#Button_0
#Listview_0
EndEnumeration
If OpenWindow (0, 216, 0, 350, 150, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Server" )
If CreateGadgetList ( WindowID ())
ButtonGadget ( #Button_0 , 250, 80, 80, 60, "areter le serveur" , #PB_Button_MultiLine )
ListViewGadget ( #Listview_0 , 10, 10, 230, 130)
EndIf
EndIf
Delay (100)
Repeat
If bloc = 0
Gosub Recievedata
EndIf
If SEvent = 1
msg(1,nbm)= "un client vient de ce conecter"
nbm=nbm+1
EndIf
If SEvent = 4
msg(1,nbm)= "un client vient de ce déconecter"
nbm=nbm+1
EndIf
Gosub readdata
Gosub SendClientData
Delay (10)
winev= WindowEvent ()
EventID = WaitWindowEvent ()
Until EventID = #PB_Event_CloseWindow
Gosub fin
;***************************************************
;* Gosub et Procedure *
;***************************************************
SendClientData:
;********************************************************************************
;* envoyer des doner au client *
;********************************************************************************
For clie=1 To clicli
If pos(6,clie)=1
For clien=1 To clicli
If pos(6,clien)=1
For nbd=1 To 110
If nbo<nbm
nbo=nbd
packet3.s = msg(1,nbo)+ "#"
SendNetworkData (clien,@packet3, Len (packet3))
MessageRequester ( "toto" ,packet3, #PB_MessageRequester_Ok )
EndIf
Next
EndIf
Next clien
EndIf
Next clie
Return
Recievedata:
;********************************************************************************
;* Lit les doner recu *
;********************************************************************************
SEvent = NetworkServerEvent () ; vérifie si des packets IP ont été recus
If SEvent = 2 ; (2 = réception de données brutes)
;Récupération de l'ID client
clientID = NetworkClientID ()
;SI il y a un client en plus ALORS on augmente la taille du tableau pour sauvegarder ces donner
If clientID>clicli
clicli=ClientID
Dim pos(6,ClientID)
EndIf
pos(6,ClientID)=1
;Alloue 512 octets dans la mémoire pour le buffer de réception
*buffer = AllocateMemory (512)
;Récupère les données recues, et les place dans le buffer
ReceiveNetworkData (clientID, *buffer, 500)
;Renvoie dans la varaible 'packet' la chaine contenue dans le buffer
packet.s = PeekS (*buffer, MemoryStringLength (*buffer))
;Compte le nombre de bloc de coordonnées
bloc = CountString (packet, "#" )
;Supprime le buffer
FreeMemory (*buffer)
EndIf
Return
Readdata:
;********************************************************************************
;* Met dans des variables les donner recu *
;********************************************************************************
If bloc > 0
For k=1 To bloc
ssbloc = StringField (packet,k, "#" )
msg(1,nbm)= StringField (ssbloc,1, ";" )
AddGadgetItem ( #Listview_0 ,-1,msg(1,nbm))
nbm=nbm+1
pos(6,ClientID)= Val ( StringField (ssbloc,2, ";" ))
Next
bloc=0
EndIf
nbb:
If nbm>100
nbm=nbm-1
If nbm<100
For d=1 To 100
msg(1,d)=msg(1,d+1)
Next
Gosub nbb
EndIf
EndIf
Return
fin:
CloseNetworkServer ()
End
Return
Procedure Recievedata()
EndProcedure
Procedure Senddata()
EndProcedure
*********************************************************
* Le client *
*********************************************************
; PureBasic Visual Designer v3.90 build 1361
Dim msg.s(1,1500)
Global IP.s, cnxID ,message$
InitNetwork () ; initialisation de la bilbiothèque du réseau mode = "-client"
IP = InputRequester ( "ip" , "choissiser l'ip du server" , "127.0.0.1" )
Port = Val ( InputRequester ( "port" , "choissiser le port du server" , "22" ))
Pseudo.s = InputRequester ( "Pseudo" , "choissiser votre pseudo" , "2" )
cnxID = OpenNetworkConnection (IP,port)
;si la connexion ne s'est pas faite, alors afficher le message suivant :
If cnxID = 0
MessageRequester ( "Erreur" , "Serveur " +IP+ " introuvable !" , #PB_MessageRequester_Ok )
End
EndIf
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#String_0
#Button_0
#Listview_0
#Listview_1
EndEnumeration
If OpenWindow ( #Window_0 , 216, 0, 600, 444, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "New window ( 0 )" )
If CreateGadgetList ( WindowID ())
StringGadget ( #String_0 , 20, 390, 480, 20, "" )
ButtonGadget ( #Button_0 , 510, 390, 80, 20, "" )
ListViewGadget ( #Listview_0 , 450, 40, 140, 230)
ListViewGadget ( #Listview_1 , 20, 40, 420, 330)
EndIf
EndIf
ssbloc.s= ""
Repeat
If bloc = 0
Gosub Recievedata
EndIf
Gosub Readdata
Gosub SendServerData
Until EventID = #PB_Event_CloseWindow : Gosub fin
;***************************************************
;* Gosub et Procedure *
;***************************************************
fin:
CloseNetworkConnection (cnxID)
End
Return
SendServerData:
;********************************************************************************
;* envoyer des doner au Serveur *
;********************************************************************************
EventID = WaitWindowEvent ()
If EventID = #PB_EventGadget
Select EventGadgetID ()
Case #Button_0
tos$= GetGadgetText ( #String_0 )
mssg$=Pseudo+ ":" +tos$
packet2.s = mssg$+ ";" + "1" + "#"
SendNetworkData (cnxID,@packet2, Len (packet2))
SetGadgetText ( #String_0 , "" )
EndSelect
EndIf
Return
Recievedata:
;********************************************************************************
;* Lit les doner recu *
;********************************************************************************
SEvent = NetworkClientEvent (cnxID) ; vérifie si des packets IP ont été recus
If SEvent = 2 ; (2 = réception de données brutes)
;Alloue 512 octets dans la mémoire pour le buffer de réception
*buffer = AllocateMemory (512)
;Récupère les données recues, et les place dans le buffer
ReceiveNetworkData (cnxID, *buffer, 500)
;Renvoie dans la varaible 'packet' la chaine contenue dans le buffer
packet.s = PeekS (*buffer, MemoryStringLength (*buffer))
;Compte le nombre de bloc de coordonnées
bloc = CountString (packet, "#" )
;Supprime le buffer
FreeMemory (*buffer)
EndIf
Return
Readdata:
;********************************************************************************
;* Met dans des variables les donner recu *
;********************************************************************************
If bloc > 0
For k=1 To bloc
msg(1,nbm) = StringField (ssbloc,1, ";" )
MessageRequester ( "totoc" ,ssbloc, #PB_MessageRequester_Ok )
msgp$= RTrim (msg(1,nbm))
If msgp$= ""
Else
AddGadgetItem ( #Listview_1 ,-1,msg(1,nbm))
nbm=nbm+1
EndIf
Next
bloc=0 ; une fois la boucle terminée -> réinitialisation du compteur de blocs à 0
EndIf
If nbm=14
nbm=nbm-1
For d=1 To 14
msg(1,d)=msg(1,d+1)
Next
EndIf
Return
Procedure Recievedata()
EndProcedure
Procedure Senddata()
EndProcedure