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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.