IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Envoi de données non autorisé car le socket n’est pas connecté


Sujet :

VB.NET

  1. #1
    Membre habitué Avatar de CLeBeR
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 412
    Points : 188
    Points
    188
    Par défaut Envoi de données non autorisé car le socket n’est pas connecté
    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.
    Pensez à voter pour une réponse qui vous aide ou pour une personne insolente !
    Si votre sujet est résolu, cliquez sur le bouton !

  2. #2
    Membre habitué Avatar de CLeBeR
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 412
    Points : 188
    Points
    188
    Par défaut
    Bonjour,
    Il fallait utiliser SocketEnvoi pour envoyer MesBytes, donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim BytesEnvoyes As Integer = SocketEnvoi.Send(MesBytes)
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim BytesEnvoyes As Integer = MonSocketServeur.Send(MesBytes)
    Merci !
    Pensez à voter pour une réponse qui vous aide ou pour une personne insolente !
    Si votre sujet est résolu, cliquez sur le bouton !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.2] Envoi de données en XML dans une socket
    Par saturnino dans le forum Langage
    Réponses: 2
    Dernier message: 10/09/2009, 11h03
  2. Envoi de données via socket
    Par Popeye63 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 17/10/2007, 14h05
  3. Envoie de donnée binaires avec les sockets
    Par java_developper dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 01/06/2007, 12h11
  4. erreur lors de l'envoie de donné via les socket.
    Par poporiding dans le forum C++
    Réponses: 1
    Dernier message: 23/05/2006, 15h23
  5. socket : envois des données impossible
    Par thechief dans le forum Réseau
    Réponses: 16
    Dernier message: 18/03/2006, 20h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo