Bonjour à tous.
Mon but est de faire une application client/serveur où le client envoie des fichiers sur le serveur.
J'ai réussi à faire en sorte que le serveur puisse gérer plusieurs client en même temps.
Mon problème vient dans le transfert de fichier entre le client et le serveur.
Je m'explique :
Actuellement mon client envoi un fichier qui est forcement définit (voir le code un peu plus loin) ce que je voudrai dans un premier temps sa serai que quand mon client se lance, une fenêtre de navigation dans le système de fichier apparaisse pour que le client puisse choisir lui même sont fichier a envoyer (ce qui permet d'envoyer n'importe quel fichier se trouvant sur la machine cliente)
Voici le code de mon client
1 2
| Dim NomFichier As String = "C:\\text.txt"
socketClient.SendFile(NomFichier) |
Dans un second temps je voudrai que mon serveur réagisse intelligemment, c'est à dire que actuellement (voir le code qui suit) mon serveur créer un fichier qui s'appelle "fichier.txt" et il écrit à l'intérieur les données qu'il reçoit.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| Private Sub Envoi()
Dim data As String = Nothing
Dim bytes() As Byte = New [Byte](1024) {}
Dim i As Integer
Dim sw As StreamWriter = Nothing
Dim fileName As String = "c:\azerty\f.txt"
If Not File.Exists(fileName) Then
Dim repertoire As DirectoryInfo = Directory.CreateDirectory("c:\azerty")
sw = New StreamWriter(fileName)
End If
While (True)
Try
bytes = New Byte(1024) {}
Dim bytesRec As Integer = socketClient.Receive(bytes)
data += Encoding.ASCII.GetString(bytes, 0, bytesRec)
i = Encoding.ASCII.GetString(bytes, 0, bytesRec).Length
If i = 0 Then
Exit While
End If
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End While
sw.WriteLine(data)
sw.Close()
MessageBox.Show(data)
End Sub |
(Dans ce code, j'ai pris comme condition que si le répertoire "azerty" n'existe pas alors je le créer)
Le problème c'est que cette fonction fait partie d'un thread pour gérer plusieurs client, donc forcement mon fichier sera écraser à chaque fois qu'un client va écrire. Donc ce que je voudrai c'est que mon serveur arrive à savoir quel client se connecte (avec un identifiant par exemple dans le programme du client) et aussi quel est le nom du fichier que mon client a envoyé sur le serveur.
En fait pour que à la fin j'ai un truc du genre :
Dim file As String = "c:\" + NomClient + NomFichier
(pour avoir des répertoire avec chaque client avec dedans tous les fichiers qu'ont envoyés chacun des clients)
Mon problème (pour résumé),j'ai réussi récupéré le nom du fichier a envoyé (du coté client), mais je sais pas comment l'envoyer au serveur et comment celui ci doit le traiter. De plus je n'ai pas trop d'idée pour connaitre l'identifiant du client(ou le créer) et pareil que pour le nom du fichier comment l'envoyer et comment le serveur doit le traiter.
Partager