Donc j'ai compris l'utilisation, de la partie serveur et client :
J'ai mixé tout ça ! et je vien de faire un code qui bug au nivo du client je crois :
CLient :
Code : Tout sélectionner
Procedure Reception(ConnectionID)
Shared Cut2$
Repeat
Delay(1) ; pour évité que le programme consomme 100% dans les processus
SEvent.l = NetworkClientEvent(ConnectionID)
If SEvent
Select SEvent
Case 2
ReceiveNetworkData(ConnectionID, AllocateMemory(1000), 1000) ; la je recois les données
Recep$ = PeekS(AllocateMemory(1000))
Cut$ = Left(Recep$, 20) ; je coupe les 20 premières lettre et les range dasn la variable Cut$
; Les 20 premiers lettre corresponde a la commande car après il fodra trié les commandes
;voici ce que je recoi normalment (je remplace les espace par des tirets): "/dir----------------(DIR) Programme files"
; donc pour connetre la command je prend les 20 premierè lettres !
If Trim(Cut$) = "/dir" ; ensuit j'enlève tout les espaces pour n'avoir que la commande
Cut2$ = Right(Recep$, 21) ; maintenat que j'ai la commend "/dir" je sais kil fo que je reprene ma variable Recp$ et que je la coupe a la 21 lettre et que je prend tout les lettre de droit qui représente le nom du fichier/dossier
ClearGadgetItemList(10)
AddGadgetItem(5, -1, Cut2$) ; je met le nom du fichiers ou du dossier dasn le gadget
EndIf
EndSelect
EndIf
Until RecepQuit = 1
EndProcedure
InitNetwork()
OpenWindow(0, 0, 0, 300, 200, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered, "Ordinateur portable")
If CreateGadgetList(WindowID())
IPAddressGadget (1, 10, 10, 100, 20) : SetGadgetState(1, MakeIPAddress(127, 0, 0, 1))
StringGadget(2, 120, 10, 30, 20, "9", #PB_String_Numeric)
ButtonGadget (3, 160, 10, 60, 20, "Connexion")
ButtonGadget (4, 220, 10, 70, 20, "Déconnexion")
ListViewGadget(5, 10, 40, 280, 150) ; Pour afficher les dossiers et les fichiers
EndIf
Repeat
Delay(1)
If WindowEvent() = #PB_EventGadget
Select EventGadgetID()
Case 3 ; Connexion
DisableGadget(1,1) ;
DisableGadget(2,1) ; Désactive les gadgets
DisableGadget(3,1) ;
ConnectionID = OpenNetworkConnection(GetGadgetText(1), Val(GetGadgetText(2)))
If ConnectionID ; connexion à l'autre ordinateur
CreateThread(@Reception(), ConnectionID) ; Je craé un thread pour recevoir les données envoyer par le serveur car des la connexinon au serveur, celui-ci envoi les nom de dossier et fichier présent dans C:\
; Je sais pas si le thread est une bonne idée, si kelkun aurait une meilleur idée, car c'est la source de tout mes ennuis
EndIf
Case 4 ; Déconnexion
CloseNetworkConnection(ConnectionID)
EndSelect
EndIf
Until EventID = #PB_EventCloseWindow
End
Serveur :
Code : Tout sélectionner
; ------------------------------------- Commandes ----------------------------------------
dir$ = "/dir"
; ----------------------------------------------------------------------------------------
InitNetwork()
Buffer = AllocateMemory(1000)
If CreateNetworkServer(9)
;MessageRequester("PureBasic - Server", "Server created (Port "+Str(Port)+").", 0)
Repeat
Delay(1)
SEvent.l = NetworkServerEvent()
If SEvent
ClientID = NetworkClientID()
Select SEvent
Case 1
MessageRequester("PureBasic - Server", "A new client has connected !", 0)
ExamineDirectory(0, "C:\", "*.*")
Repeat
If x = 0
FileType = NextDirectoryEntry()
If FileType
FileName$ = DirectoryEntryName()
If FileType = 2 ; Si c'est un Doissier
FileName$ = "(DIR) "+FileName$ ; on ajoute (DIR) avent le nom de celui ci
EndIf
If SendNetworkString(ClientID, "/dir "+FileName$) ;envoi la commande et le nom du fichier ou du dossier
Debug "/dir "+FileName$ ; j'affiche le debug pour voir ce qui est envoyer
Else
Debug "Bug d'envoi !!"
EndIf
EndIf
EndIf
Until FileType = 0
Case 2
ReceiveNetworkData(ClientID, Buffer, 1000)
MessageRequester("Info", "String: "+PeekS(Buffer), 0)
Case 3
MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" has send a file via the network !", 0)
ReceiveNetworkFile(ClientID, "C:\TEST_Network.ftp3")
Case 4
MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" has closed the connexion...", 0)
Quit = 0
EndSelect
EndIf
Until Quit = 1
CloseNetworkServer()
EndIf
End
Donc voila, le probleme c'est que sa veut pas s'affiché dals le gadget listview...
et je croi que ma prodédur n'est pas une bonne base pour recevoir les info !! enfin
J'espère que kelun pourra m'aidé, je commence a fatiguer, il est 03:10, bonne nuit !!