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

Réseau .NET Discussion :

réception de données par un socket


Sujet :

Réseau .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2009
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 149
    Par défaut réception de données par un socket
    Salut à tous,

    Je sais que certaines personnes diront que le réponse se trouve sur google mais, franchement cela fait une semaine que je cherche la solution en vain sur le net. Je bute sur un problème que je n'arrive pas à comprendre. Je développe - pour un ami -une application serveur en c# 3.5 sensée recevoir d'un appareil connecté sur une machine distante des données. Malheureusement lorsque le client se connecte je reçois l'erreur suivante lors de la réception des données :
    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.... .
    Alors que j'ai bien pris soin de faire socket.Bind(ipe) - où ipe=l'instance de mon IPEndpoint();
    voici le code :

    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
    30
    31
    32
    33
    34
    35
    36
     
     private void txt_IpAds_KeyPress(object sender, KeyPressEventArgs e)
            {
                try
                {
                    if (e.KeyChar == (char)Keys.Enter)
                    {
                        ipa = this.txt_IpAds.Text.Trim();
                        this.txt_IpAds.Visible = false;
                        ipe = new IPEndPoint(IPAddress.Parse("192.168.1.80"), 8000);
                        sock.Bind(ipe);
                        sock.Listen(20);
                        Thread thr = new Thread(new ThreadStart(acceptLesCnx));
                        thr.Start();
                    }
                }
                catch (Exception Ex)
                {
                    MessageBox.Show(Ex.Message.ToString());
                }
            }
     
     private void acceptLesCnx()
            {
                try
                {
                    sock.Accept();
                    sock.Receive(buffer, SocketFlags.None);
                    str = System.Text.Encoding.ASCII.GetString(buffer);
                    retourneLesInformations(str);
                }
                catch (Exception Ex)
                {
                    MessageBox.Show(Ex.Message.ToString());
                }
            }
    Merci.

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 269
    Par défaut
    Bonjour,

    Juste pour etre sur : "192.168.1.80" c'est bien ton ip local, pas l'ip de la machine distante avec laquel tu veux communiquer?

  3. #3
    Membre confirmé
    Inscrit en
    Août 2009
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 149
    Par défaut
    Bonjour Antoine,
    Oui 192.168.1.80 est bien l'IP de la machine locale pas celle de qui l'application est sensé recevoir des données.

  4. #4
    Membre confirmé
    Inscrit en
    Août 2009
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 149
    Par défaut
    Je viens de trouver la solution au problème. Il me fallait plutôt écrire à la place de ceci :
    il fallait écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    socket client = sock.Accept();
    et recevoir les dionnées avec le socket "client". Cequi revient à :
    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
     
    private void acceptLesCnx()
            {
                try
                {
                    Socket client = sock.Accept();
                    client.Receive(buffer, SocketFlags.None);
                    str = System.Text.Encoding.ASCII.GetString(buffer);
                    retourneLesInformations(str);
                }
                catch (Exception Ex)
                {
                    MessageBox.Show(Ex.Message.ToString());
                }
            }
    ca marche à merveille. Je crois que j'étais trop fatigué pour vouloir recevoir des données avec un socket autre que celui sur lequel le client s'est connecté. Merci bien Antoine et a+

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/09/2010, 20h38
  2. Réception de données envoyées par bluetooth
    Par poupouille dans le forum Développement Mobile en Java
    Réponses: 6
    Dernier message: 29/07/2007, 16h35
  3. Flux de données par socket
    Par formentor dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 29/05/2007, 09h24
  4. Envoi donnes par socket
    Par astrotouf dans le forum Web & réseau
    Réponses: 4
    Dernier message: 09/04/2007, 20h06
  5. Réponses: 2
    Dernier message: 06/06/2006, 12h10

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