Accueil > > > ENVOYER N'IMPORTE QUEL FICHIER, DE N'IMPORTE QUELLE TAILLE PAR WINSOCK
ENVOYER N'IMPORTE QUEL FICHIER, DE N'IMPORTE QUELLE TAILLE PAR WINSOCK
Information sur la source
Description
Ceci est un code servant à envoyer n'importe quel fichier de n'importe quelle taille par Winsock. Le code sert à prendre un fichier a partir d'un autre ordi. Ce code explique aussi : - L'utilisation de winsock - L'utilisation de CommonDialog - La création d'une progressbar perso. J'ai largement commenté le code et j'ai essayé d'etre clair, surtout pour les débutants.
Source
- ' Cette source explique comment telecharger un fichier d'un ordinateur distant, a laide de WINSOCK
- ' Ele utilise la methode des PACKETS (découpage des fichiers en parties d'une taille définie)
- ' Plus la taille des packets est grande, plus le transfert sera rapide, cependant, la stabilit sera réduite.
-
-
- Option Explicit ' Declaration de variables obligatoire, pour eviter des erreurs
-
- Dim Numero_Fichier As Integer ' Variable qui contiendra le nomero du fichier qu'on traitera sur le module distant
- Dim Numero_Fichier2 As Integer ' Variable qui contiendra le nomero du fichier qu'on traitera sur le module local
- Dim OUSTOCKER As String 'Variable qui contiendra l'emplacement local ou on stockera le fichier recu
- Dim TitreFichier ' Declaration de variable qui contiendra le titre du fichier (ex : fichier.txt)
- Dim TailleFichier As Long ' Variable qui contiendra la taille du fichier
-
- Sub PrendreFichier(ByVal FICHIER As String, ByVal OUSTOCKERLEFICHIER As String) ' Procedure d'envoi de fichier
- LocalSock.SendData "GET " & FICHIER ' On envoi la demande de reception du fichier
- OUSTOCKER = OUSTOCKERLEFICHIER ' OUSTOCKER prend le chemin du dossier on on mettra le fichier en local, une fois recu
- TitreFichier = Right(FICHIER, InStr(1, StrReverse(FICHIER), "\") - 1) ' On prend, dans le nom de fichier, de la droite jusqu'a ce quon tombe sur le \, et on garde tout ce qui est a droite, soit, le nom du fichier et son extension, sans le chemin
- End Sub ' Fin de procedure
-
- Private Sub Connect_Click() ' Se produit lors du click sur le bouton Connect (connecter)
- LocalSock.Connect LocalSock.LocalHostName, 20000 ' On connecte le socket local au socket distant, sur le meme port et le meme host, on devient CLIENT
- 'NOTE : ici, on a connecter le socket local sur LOCALHOSTNAME (sur la machine locale), pour une utilisation a distance, remplacez-le par le nom dhote ou le IP de lordi distant
- End Sub ' Fin de procedure
-
- Private Sub DistantSock_ConnectionRequest(ByVal requestID As Long) ' Se produit lorsque le module distant recoit une demande de connection.
- DistantSock.Close ' On ferme lécoute pour pouvoir etablir une connexion
- DistantSock.Accept requestID ' on accepte la connection
- End Sub ' Fin de procedure
-
- Private Sub DistantSock_DataArrival(ByVal bytesTotal As Long) ' Evenement se produisant lorsque socket distant recoit des données...
- Dim Donnees_Recues As String 'Donnees_recues est la variable ou on stockera les données recues.
- Dim NomFichier As String ' Variable qui contiendra le nom du fichier a lire.
- Dim Buf As String ' Variable qui servira pour recuperer les octets du fichier
- DistantSock.GetData Donnees_Recues ' On stocke les données recues dans la variable Donnees_Recues
- If Left(Donnees_Recues, 3) = "GET" Then ' CONDITION - Si les 3 premieres lettres de la chaine recue sont GET (demande de fichier)
- Numero_Fichier = FreeFile ' On assigne un numero de fichier libre a Numero_Fichier
- NomFichier = Right(Donnees_Recues, Len(Donnees_Recues) - 4) ' Ici, on recupere le nom de fichier de la commande GET, pour cela, on prend tout depuis la droite et on enleve les 4 premiers caracteres (le GET et l'espace qui suit), et il nous reste le nom du fichier.
- Open NomFichier For Binary Access Read As #Numero_Fichier ' On ouvre le fichier pour le lire.
- DistantSock.SendData "PRET " & LOF(Numero_Fichier) ' On envoie la confirmation d'ouverture du fichier au module local, ainsi que la taille du fichier ouvert en octets, pour la barre de progression.
- ElseIf Donnees_Recues = "NXT" Then ' Si la condition précédente n'est pas remplie et que on a recu la comande de packet suivant...
- Select Case LOF(Numero_Fichier) - Seek(Numero_Fichier) + 1 ' On choisit en fonction des octets du fichier restants, qu'on n'a pas encore lus.
- Case Is >= 2048 ' Si la taille restante est uperieure ou egale a 2048
- Buf = Space(2048) ' Buf est le buffer, qu'on INITIALIZE (on le remplit despaces, 2048, dans ce cas, vous pouvez évidemment le modif)
- Get #Numero_Fichier, , Buf ' On recupere les 2048 caracteres du fichier suivants, dans la variable BUF.
- DistantSock.SendData Buf ' On envoie ce qu'on a recupéré au module local.
- Case Is < 1 ' Si tout le fichier a été lu
- Close #Numero_Fichier ' on ferme le fichier
- DistantSock.SendData "FIN" ' on envoie la comande de Fin de fichier
- Case Else ' Si toutes les conditions précédentes ne sont pas remplies (si la taille restante est >=1 et <2048)
- Buf = Space(LOF(Numero_Fichier) - Seek(Numero_Fichier) + 1) ' On initialize le buffer avec le nombre d'espaces corespondant au nombre de caracteres restant
- Get #Numero_Fichier, , Buf ' On recupere les caracteres restants du fichier dans la variable BUF.
- DistantSock.SendData Buf ' On envoie ce qu'on a recuperrer
- End Select ' fin de la selection
- End If ' Fin de condition
- End Sub ' Fin de procedure
-
- Private Sub Form_Load() ' Evenement se produisant lorsque la feuille (form), FORM1 est chargée.
- DistantSock.LocalPort = 20000 ' on met le port d'ecoute du socket distant a 20000
- DistantSock.Listen ' on le fait ecouter (attendre une demande de connxion), il devient SERVER
- End Sub 'Fin de procedure
-
- Private Sub LocalSock_DataArrival(ByVal bytesTotal As Long) ' Evenement se produisant lorsque socket local recoit des données...
- Dim Donnees_Recues As String 'Donnees_recues est la variable ou on stockera les données recues.
- LocalSock.GetData Donnees_Recues ' On stocke les données recues dans la variable Donnees_Recues
- If Left(Donnees_Recues, 4) = "PRET" Then ' CONDITION - Si les 4 premieres lettres de la chaine recue sont PRET (confirmation d'ouverture de fichier)
- Numero_Fichier2 = FreeFile ' On assigne un numero de fichier libre a Numero_Fichier
- TailleFichier = Right(Donnees_Recues, Len(Donnees_Recues) - 5) ' Ici, on recupere la taille de fichier de la commande PRET, pour cela, on prend tout depuis la droite et on enleve les 5 premiers caracteres (le PRET et l'espace qui suit), et il nous reste la taille du fichier.
- Open OUSTOCKER & "\" & TitreFichier For Output As #Numero_Fichier2 ' On cree le fichier ou on va ecrire.
- LocalSock.SendData "NXT" ' on envoie la demande de reception du packet suivant, puisqu'il n'y a pas de packet précedent, c'est le premier packet qu'on va recevoir.
- ElseIf Donnees_Recues = "FIN" Then ' si on recoit en revanche, la notification de fin de fichier...
- Close #Numero_Fichier2 ' On ferme le fichier
- Else ' Si on ne recoit ni la fin de fichier, ni la confirmation douverture, c'est qu'on recoit un packet (partie du fichier).
- Print #Numero_Fichier2, Donnees_Recues; ' On inscrit le packet dans le fichier ouvert
- 'NOTE : le ; a la fin, signifie qu'on ne va pas a la ligne, cette methode evite de stocker les packets dans une variable (en mémoire), ce qui accelere le telechargement, augmente la stabilité et les performances systeme
- ' De plus, les fichiers de type MP3, par exemple, peuvent etre lus pendant le telechargement !
- LocalSock.SendData "NXT" ' On demande le packet suivant
- Progress.Width = BGProgress.Width / TailleFichier * LOF(Numero_Fichier2) ' On met a jour notre progressbar perso :)
- Percent.Caption = Round(100 / TailleFichier * LOF(Numero_Fichier2)) & "%" ' On met le pourcentage a jour
- End If ' Fin de condition
- End Sub ' Fin de procedure
-
- Private Sub Prendre_Click() ' Evenement se produisant lors du clik sur le bouton PRENDRE FICHIER
- On Error Resume Next ' On empechre l'arret du programme lors d'une erreur
- If LocalSock.State = sckConnected Then ' Si le socket local est connecter (condition)
- With Cmd ' WITH sert a racourcir le code, a enlever le nom d'objet qu'on doit ecrire eu debut. On n'utilisera qu'un simple point (ex : bouton.visible devient .visible)
- .DialogTitle = "Choisir fichier" ' On met un titre a la boite de dialogue
- .CancelError = True ' Si l'utilisateur annule, une erreur se produit
- .ShowOpen 'On affiche la boite de dialogue
- If Err Then Exit Sub ' Condition - si une erreur est detectee (l'utilisateur a fait "annuler"), on quitte la procedure, on n'execute pas tout le code restant dans celle-ci.
- PrendreFichier .FileName, InputBox("Tappez l'endroit ou stocker le fichier ex : C: ou C\Windows", "Chemin", "C:") ' On appelle la procédure PRENDREFICHIER (voir plus haut) en demandant ou enregistrer le fichier recu.
- End With ' Fin du WITH
- End If ' Fin de condition
- End Sub ' Fin de procedure
' Cette source explique comment telecharger un fichier d'un ordinateur distant, a laide de WINSOCK
' Ele utilise la methode des PACKETS (découpage des fichiers en parties d'une taille définie)
' Plus la taille des packets est grande, plus le transfert sera rapide, cependant, la stabilit sera réduite.
Option Explicit ' Declaration de variables obligatoire, pour eviter des erreurs
Dim Numero_Fichier As Integer ' Variable qui contiendra le nomero du fichier qu'on traitera sur le module distant
Dim Numero_Fichier2 As Integer ' Variable qui contiendra le nomero du fichier qu'on traitera sur le module local
Dim OUSTOCKER As String 'Variable qui contiendra l'emplacement local ou on stockera le fichier recu
Dim TitreFichier ' Declaration de variable qui contiendra le titre du fichier (ex : fichier.txt)
Dim TailleFichier As Long ' Variable qui contiendra la taille du fichier
Sub PrendreFichier(ByVal FICHIER As String, ByVal OUSTOCKERLEFICHIER As String) ' Procedure d'envoi de fichier
LocalSock.SendData "GET " & FICHIER ' On envoi la demande de reception du fichier
OUSTOCKER = OUSTOCKERLEFICHIER ' OUSTOCKER prend le chemin du dossier on on mettra le fichier en local, une fois recu
TitreFichier = Right(FICHIER, InStr(1, StrReverse(FICHIER), "\") - 1) ' On prend, dans le nom de fichier, de la droite jusqu'a ce quon tombe sur le \, et on garde tout ce qui est a droite, soit, le nom du fichier et son extension, sans le chemin
End Sub ' Fin de procedure
Private Sub Connect_Click() ' Se produit lors du click sur le bouton Connect (connecter)
LocalSock.Connect LocalSock.LocalHostName, 20000 ' On connecte le socket local au socket distant, sur le meme port et le meme host, on devient CLIENT
'NOTE : ici, on a connecter le socket local sur LOCALHOSTNAME (sur la machine locale), pour une utilisation a distance, remplacez-le par le nom dhote ou le IP de lordi distant
End Sub ' Fin de procedure
Private Sub DistantSock_ConnectionRequest(ByVal requestID As Long) ' Se produit lorsque le module distant recoit une demande de connection.
DistantSock.Close ' On ferme lécoute pour pouvoir etablir une connexion
DistantSock.Accept requestID ' on accepte la connection
End Sub ' Fin de procedure
Private Sub DistantSock_DataArrival(ByVal bytesTotal As Long) ' Evenement se produisant lorsque socket distant recoit des données...
Dim Donnees_Recues As String 'Donnees_recues est la variable ou on stockera les données recues.
Dim NomFichier As String ' Variable qui contiendra le nom du fichier a lire.
Dim Buf As String ' Variable qui servira pour recuperer les octets du fichier
DistantSock.GetData Donnees_Recues ' On stocke les données recues dans la variable Donnees_Recues
If Left(Donnees_Recues, 3) = "GET" Then ' CONDITION - Si les 3 premieres lettres de la chaine recue sont GET (demande de fichier)
Numero_Fichier = FreeFile ' On assigne un numero de fichier libre a Numero_Fichier
NomFichier = Right(Donnees_Recues, Len(Donnees_Recues) - 4) ' Ici, on recupere le nom de fichier de la commande GET, pour cela, on prend tout depuis la droite et on enleve les 4 premiers caracteres (le GET et l'espace qui suit), et il nous reste le nom du fichier.
Open NomFichier For Binary Access Read As #Numero_Fichier ' On ouvre le fichier pour le lire.
DistantSock.SendData "PRET " & LOF(Numero_Fichier) ' On envoie la confirmation d'ouverture du fichier au module local, ainsi que la taille du fichier ouvert en octets, pour la barre de progression.
ElseIf Donnees_Recues = "NXT" Then ' Si la condition précédente n'est pas remplie et que on a recu la comande de packet suivant...
Select Case LOF(Numero_Fichier) - Seek(Numero_Fichier) + 1 ' On choisit en fonction des octets du fichier restants, qu'on n'a pas encore lus.
Case Is >= 2048 ' Si la taille restante est uperieure ou egale a 2048
Buf = Space(2048) ' Buf est le buffer, qu'on INITIALIZE (on le remplit despaces, 2048, dans ce cas, vous pouvez évidemment le modif)
Get #Numero_Fichier, , Buf ' On recupere les 2048 caracteres du fichier suivants, dans la variable BUF.
DistantSock.SendData Buf ' On envoie ce qu'on a recupéré au module local.
Case Is < 1 ' Si tout le fichier a été lu
Close #Numero_Fichier ' on ferme le fichier
DistantSock.SendData "FIN" ' on envoie la comande de Fin de fichier
Case Else ' Si toutes les conditions précédentes ne sont pas remplies (si la taille restante est >=1 et <2048)
Buf = Space(LOF(Numero_Fichier) - Seek(Numero_Fichier) + 1) ' On initialize le buffer avec le nombre d'espaces corespondant au nombre de caracteres restant
Get #Numero_Fichier, , Buf ' On recupere les caracteres restants du fichier dans la variable BUF.
DistantSock.SendData Buf ' On envoie ce qu'on a recuperrer
End Select ' fin de la selection
End If ' Fin de condition
End Sub ' Fin de procedure
Private Sub Form_Load() ' Evenement se produisant lorsque la feuille (form), FORM1 est chargée.
DistantSock.LocalPort = 20000 ' on met le port d'ecoute du socket distant a 20000
DistantSock.Listen ' on le fait ecouter (attendre une demande de connxion), il devient SERVER
End Sub 'Fin de procedure
Private Sub LocalSock_DataArrival(ByVal bytesTotal As Long) ' Evenement se produisant lorsque socket local recoit des données...
Dim Donnees_Recues As String 'Donnees_recues est la variable ou on stockera les données recues.
LocalSock.GetData Donnees_Recues ' On stocke les données recues dans la variable Donnees_Recues
If Left(Donnees_Recues, 4) = "PRET" Then ' CONDITION - Si les 4 premieres lettres de la chaine recue sont PRET (confirmation d'ouverture de fichier)
Numero_Fichier2 = FreeFile ' On assigne un numero de fichier libre a Numero_Fichier
TailleFichier = Right(Donnees_Recues, Len(Donnees_Recues) - 5) ' Ici, on recupere la taille de fichier de la commande PRET, pour cela, on prend tout depuis la droite et on enleve les 5 premiers caracteres (le PRET et l'espace qui suit), et il nous reste la taille du fichier.
Open OUSTOCKER & "\" & TitreFichier For Output As #Numero_Fichier2 ' On cree le fichier ou on va ecrire.
LocalSock.SendData "NXT" ' on envoie la demande de reception du packet suivant, puisqu'il n'y a pas de packet précedent, c'est le premier packet qu'on va recevoir.
ElseIf Donnees_Recues = "FIN" Then ' si on recoit en revanche, la notification de fin de fichier...
Close #Numero_Fichier2 ' On ferme le fichier
Else ' Si on ne recoit ni la fin de fichier, ni la confirmation douverture, c'est qu'on recoit un packet (partie du fichier).
Print #Numero_Fichier2, Donnees_Recues; ' On inscrit le packet dans le fichier ouvert
'NOTE : le ; a la fin, signifie qu'on ne va pas a la ligne, cette methode evite de stocker les packets dans une variable (en mémoire), ce qui accelere le telechargement, augmente la stabilité et les performances systeme
' De plus, les fichiers de type MP3, par exemple, peuvent etre lus pendant le telechargement !
LocalSock.SendData "NXT" ' On demande le packet suivant
Progress.Width = BGProgress.Width / TailleFichier * LOF(Numero_Fichier2) ' On met a jour notre progressbar perso :)
Percent.Caption = Round(100 / TailleFichier * LOF(Numero_Fichier2)) & "%" ' On met le pourcentage a jour
End If ' Fin de condition
End Sub ' Fin de procedure
Private Sub Prendre_Click() ' Evenement se produisant lors du clik sur le bouton PRENDRE FICHIER
On Error Resume Next ' On empechre l'arret du programme lors d'une erreur
If LocalSock.State = sckConnected Then ' Si le socket local est connecter (condition)
With Cmd ' WITH sert a racourcir le code, a enlever le nom d'objet qu'on doit ecrire eu debut. On n'utilisera qu'un simple point (ex : bouton.visible devient .visible)
.DialogTitle = "Choisir fichier" ' On met un titre a la boite de dialogue
.CancelError = True ' Si l'utilisateur annule, une erreur se produit
.ShowOpen 'On affiche la boite de dialogue
If Err Then Exit Sub ' Condition - si une erreur est detectee (l'utilisateur a fait "annuler"), on quitte la procedure, on n'execute pas tout le code restant dans celle-ci.
PrendreFichier .FileName, InputBox("Tappez l'endroit ou stocker le fichier ex : C: ou C\Windows", "Chemin", "C:") ' On appelle la procédure PRENDREFICHIER (voir plus haut) en demandant ou enregistrer le fichier recu.
End With ' Fin du WITH
End If ' Fin de condition
End Sub ' Fin de procedure
Conclusion
Laissez vos commentaires et ne soyez pas trop sévères :s, je n'ai que 14 ans et suis encore débutant en VB.
Si vous proposez une critique, essayez de donner une astuce pour y remedier. merci :)
Historique
- 21 juillet 2005 13:50:57 :
- Ben là, j'ai essayé de mettre le EXE , malgrès le
"Evitez de mettre des éxécutables dans vos zips merci de votre compréhension, les .exe seront automatiquement supprimé lors de l'upload"...
- 21 juillet 2005 13:58:11 :
- Sa a pas marcher, j'ai dc mis le exe sous une autre extension :)
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
envoyer un fichier depuis winsock [ par kidpigeyre ]
je sais que l'on ne peut pas mais il doit être possible de l'ouvrir dans un textbox ou richtextbox et de l'envoyer sous cette forme et on le reconstit
comment envoyer des fichier par WINSOCK [ par CrazyMan19 ]
salut tout le monde, je veut savoir comment faire pour envoyer des fichier et des images pas le contrôle "WINSOCK" et merci.
téléchargement de fichier winsock [ par consiliblob ]
Lu,J'ai créé un client et un serveur avec winsock, et à un moment quand j'essaye d'envoyer un fichier depuis le client au serveur (avec une connexion
Email avec Winsock [ par pcpunch ]
Dans le cadre de mon keylogger , j utilise winsock pour envoyer le log par email.Le probléme que je rencontre c que j'envoie un fichier de + de 8k (ve
Envi de données avec un winsock [ par zeunz ]
salut les gars,je suis entrain de concevoir un prog du meme style qu'icq.(tchat) et j'aimerai pouvoir envoyer des fichiers (exe,bmp,txt,...) par un wi
je ve envoyer une image sur picturebox par winsock mais elle est volumineuse comment faire svp !!! [ par kapisko17 ]
je ve envoyer une image dejas chargé dans le picture box pas winsock mais le probleme c'est que ça prend beucoup de temps et j'ai besoin de la compres
Envoyer fichier par e-mail [ par Revolux ]
Bonsoir, Je souhaite transmettre un fichier par l' intermediaire d' un message. En clair, je veux envoyer un E-mail. J' ai compris que winsock etait
Configuration du control CommonDialog (enregistrer sous) [ par desserre ]
Un petit coup de<
envoie de fichier sur FTP [ par Rochon ]
Bonsoir, j'ai un problème avec mswinsock: je voudrais envoyé un fichier sur un FTP, j'ai fait toute la partie connection au serveur, le fich
Pliz!!!! Envoie et reception de fichier.txt par Winsock [ par nycoss ]
Salut a tous,je suis en train de créer un voleur d'archive de conversation MSN messenger et je cherche depuis maintenant 7jour 4heures et 37 minute un
|
Derniers Blogs
[SHAREPOINT] NOUVELLE PRéSENTATION POUR LA DOCUMENTATION SHAREPOINT SUR TECHNET.[SHAREPOINT] NOUVELLE PRéSENTATION POUR LA DOCUMENTATION SHAREPOINT SUR TECHNET. par Patrick Guimonet
Vous l'avez peut-être déjà remarqué ? La documentation SharePoint a subit un cure de "relooking" et prend un style inspiré de Metro, donc plus sobre, plus pur, plus clair ! C'est sur fond blanc et ca ressemble à ça : Globaleme...
Cliquez pour lire la suite de l'article par Patrick Guimonet ASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHEASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHE par fathi
Tout le monde est unanime pour dire que la programmation multi-thread et asynchrone est en train de devenir un sujet incontournable. Beaucoup de choses sont arrivées avec le framework 4 pour le code parallèle (TPL, PLinq,.) et bientôt, on va avoir l...
Cliquez pour lire la suite de l'article par fathi PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS !PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS ! par Etienne Margraff
J'ai récemment eu un problème pour obtenir l'intelliTrace sur un site web dans IIS. Il n'y avait pas de message d'erreur, rien dans le journal d'évènement Windows, et après 3 appels à une voyante, 2 visites chez un marabou, j'ai failli me résign...
Cliquez pour lire la suite de l'article par Etienne Margraff OFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONSOFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONS par junarnoalg
De nombreuses entreprises font le choix de SharePoint Online, service fourni au travers de l'offre de Microsoft Office 365. S'il est vrai que ce choix apporte un grand nombre d'avantages; rapidité de mise en ½uvre, disponibilité, large couvertu...
Cliquez pour lire la suite de l'article par junarnoalg PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|