Bonjour,
j’essaie de créer une application client/serveur pour effectuer des actions à distance (dans un premier temps en local). J'ai donc crée ce code pour le client :
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
Sub Connexion()
        Dim port As String = "8080"
        Dim ip As String = "127.0.0.1"
        Dim MonSocketClient As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
        Dim MonEP As IPEndPoint = New IPEndPoint(IPAddress.Parse(ip), 8080)
        MonSocketClient.Connect(MonEP)
        Dim MesBytes(255) As Byte
        Dim BytesRecus As Integer = MonSocketClient.Receive(MesBytes)
        Dim MonString As String = System.Text.Encoding.ASCII.GetString(MesBytes)
        MsgBox(MonString)
        MonSocketClient.Close()
    End Sub
 
    Private Sub FormClient_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim ThreadConnexion As New Threading.Thread(AddressOf Connexion)
        ThreadConnexion.Start()
    End Sub
Ainsi que le code suivant pour le serveur :

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
    Sub Connexion()
        Dim port As String = "8080"
        Dim ip As String = "127.0.0.1"
        Dim MonSocketServeur As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
        Dim MonEP As IPEndPoint = New IPEndPoint(IPAddress.Parse(ip), 8080)
        MonSocketServeur.Bind(MonEP) 'Lie le socket à cette IP
        MonSocketServeur.Listen(1) 'Se met en mode écoute
        Dim SocketEnvoi As Socket = MonSocketServeur.Accept() 'Bloquant tant que pas de connexion
        Dim MesBytes As Byte() = System.Text.Encoding.ASCII.GetBytes("Bonjour")
        Dim BytesEnvoyes As Integer = MonSocketServeur.Send(MesBytes)
        MonSocketServeur.Close()
    End Sub
    Private Sub FormServeur_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim ThreadConnexion As New Threading.Thread(AddressOf Connexion)
        ThreadConnexion.Start()
    End Sub
Donc le but est de faire apparaitre un messagebox sur mon client avec le texte que le serveur a envoyé. Le problème c'est que lorsque j'envoie les Bytes avec mon serveur, j'obtiens l'erreur suivante :
Une requête d’envoi ou de réception de données n’a pas été autorisée car le socket n’est pas connecté et (lors de l’envoi sur un socket datagramme en utilisant un appel sendto) aucune adresse n’a été fournie
à la ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Dim BytesEnvoyes As Integer = MonSocketServeur.Send(MesBytes)
J'ai vu que l'on pouvait mettre des arguments de mémoire tampon avec la commande Send mais dans l'exemple que j'ai trouvé, il n'y a aucun paramètre supplémentaire.
Quelqu'un saurait-il d'où vient le problème ?
Merci.