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

C# Discussion :

problème d'écoute et d'envoie sur 2 sockets distinctes même ips, port différents


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Par défaut problème d'écoute et d'envoie sur 2 sockets distinctes même ips, port différents
    Salut,

    Actuellement en train de développer un msn like, j'ai un soucis au niveau de lécoute sur 2 sockets.

    J'ai utilisé Une socket pour spécialement destinée à recevoir les fichiers sur le port 8766

    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
     
     public  ServerFile(int port)
            {
                IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
     
                IPAddress ipAddress = ipHostInfo.AddressList[0];
     
                EndPoint ep = new IPEndPoint(ipAddress, port);
                //((IPEndPoint)sockeServ.RemoteEndPoint).Address;
                sockFile = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
                   ProtocolType.Tcp);
                sockFile.Bind(ep);
                sockFile.Listen(100);
            }
     
    public void acceptSocketFile()
            {
                while (true)
                {
                    try
                    {
                        //accepte
                        Socket socketFile = sockFile.Accept();
     
     
                    }
                    catch (SocketException s)
                    {
     
                    }
                }
            }
    Et une autre socket spécialement pour les messages texte avec le même code mais sur le port 8765.

    Depuis que je suis passé à 2 sockets d'écoute, quand j'envoie un fichier et du texte en même temps, mon texte va dans ma boucle de réception de fichier au lieu d'aller dans la boucle de réception des messages. Je ne comprend pas pourquoi il y a ce mélange.

    Le scénario c'est:
    je commence par envoyer du texte : ca roule:
    Ensuite j'envoie un fichier: ca roule mais c'est extrêmement long, il pédale dans le semoule c'est bizarre.
    ensuite j'envoie du texte, et en debug je remarque que ma socket d'envoi de message est à CONNECTED=FALSE! donc apparemment le fait d'envoyer le fichier à eu un impacte sur ma socket Message mais pourquoi?
    En voyant ma socket message à false, j'ai ajouté 2 ligne de code pour la recréer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    sockConnection = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
                                  ProtocolType.Tcp);
                        sockConnection.Connect(ctDestinataire.Ip,8765);
    Et bien comme je l'ai di précédemment , c'est ma scket de fichier qui l'a réceptionné alors que c'est même pas le même port.

    Merci de m'aider

  2. #2
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    Citation Envoyé par mnemonic78 Voir le message
    Depuis que je suis passé à 2 sockets d'écoute...
    As-tu un thread de gestion par socket ?

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    pour l'envoi tu utilises bien 2 sockets différentes ?

  4. #4
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Par défaut
    Une fois l'acceptation (accept()) faite, donc si quelqu'un m'envoie un message ou un fichier,je récupère par un event la socket message ou socket fichier que j'envoie à ma fenêtre de conversation, puis je démarre les thread d'écoute

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                        ThreadListenMessage = new Thread(new ParameterizedThreadStart(ecouteMessage));
                        ThreadListen.Start(sockMessage);
     
    //même code pour la socket fichier...
    Sinon pour envoyer des messages ou des fichiers de part et d'autre
    je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     sockMessage = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
                                  ProtocolType.Tcp);
                        sockMEssage.Connect(ctDestinataire.Ip, 8765);
     
     
     sockFichier = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
                                  ProtocolType.Tcp);
                        sockFichier .Connect(ctDestinataire.Ip, 8766);
    y a t'il quelque chose de mal?

Discussions similaires

  1. [HOOK] Problème(s) pour réaliser le tutoriel sur les HOOKS
    Par Rodrigue dans le forum C++Builder
    Réponses: 13
    Dernier message: 27/07/2016, 18h22
  2. Réponses: 1
    Dernier message: 10/11/2013, 16h48
  3. Réponses: 5
    Dernier message: 21/04/2011, 11h54
  4. Problème d'écoute sur TCPIP
    Par acheo dans le forum C#
    Réponses: 1
    Dernier message: 08/11/2010, 22h43
  5. [Debian Etch] problème d'écoute sur un port
    Par Zipyz dans le forum Sécurité
    Réponses: 1
    Dernier message: 10/12/2007, 20h53

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