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 :

Socket microsoft comportement bizarre


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    929
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 929
    Par défaut Socket microsoft comportement bizarre
    Bonjour,


    J'ai fais un serveur-client reseau en dotnet , un thread pour la méthode 'AcceptTcpClient' et un thread par client.

    Je joint une partie du code de 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    Thread th = new Thread(Distrib);
                th.Start();
                //Console.ReadKey(); 
                Console.ReadLine();
                //Console.WriteLine("OUT");
                sort = true;
            }
           static  private void Distrib()
            {
                //Console.WriteLine("AA1");
                byte[] bb = new byte[4];
                IPAddress ipaddress=new IPAddress(bb);
                //Console.WriteLine("AA2");
                //tcpListener = new TcpListener(IPAddress.Any, 5000);
                tcpListener = new TcpListener(ipaddress, 5000);
                //Console.WriteLine("AA3");
                sort = false;
                while (!sort)
                {
                    //Console.WriteLine("AA4");
                    TcpClient client = null;
                    try
                    {
                        //Console.WriteLine("AA5");
                        tcpListener.Start();
                        //Console.WriteLine("AA6");
                        client = tcpListener.AcceptTcpClient();
    //Console.WriteLine($"ASRV1");
     
                        //Console.WriteLine("Connected!");
                        //data = null;
                        var srv = new srv(client);
                        //Console.WriteLine($"ASRV2");
                        Thread tt = new Thread(srv.trv);
                        //Console.WriteLine($"ASRV3");
                        tt.Start();
    ...
    ...

    Quand j'ote les appels 'Console.WriteLine' et remplace Console.ReadLine par Console.ReadKey ,ca ne marche pas.
    Quand je remet les Console.WriteLine et remplace Console.ReadLine par Console.ReadKey ,ca marche.
    Quand j'ote les Console.WriteLine et utilise Console.ReadLine à la place de Console.ReadKey ,ca marche !


    Quand ca ne marche pas -> Le programme client se connecte , sans evenement de connexion sur le serveur et le programme client ne peux pas fonctionner.
    Quand ca marche , le programme client se connecte , avec evenement de connexion sur le serveur , le programme client peux dialoguer avec le serveur.

    Pourquoi ?

  2. #2
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Plusieurs choses :
    • la variable sort est-elle bien déclarée avec le mot clé volatile ?
    • la ligne tcpListener.Start() ne devrait pas être dans la boucle, mais en dehors
    • j'ai l'impression que le problème est plus lié à l'utilisation de ReadKey car la présence des WriteLine. Aussi, comment est lancé le programme ? Via un IDE, ou en ligne de commande ?

Discussions similaires

  1. probleme avec les socket (comportement bizarre)
    Par yous18 dans le forum Réseau
    Réponses: 14
    Dernier message: 23/05/2011, 19h30
  2. xsl:test .... avec comportement bizarre
    Par Blue LC dans le forum XMLRAD
    Réponses: 2
    Dernier message: 10/06/2005, 14h56
  3. [ACESS][MEMO][ISNULL]Comportement bizarre
    Par seb.49 dans le forum ASP
    Réponses: 2
    Dernier message: 09/06/2004, 11h44
  4. [HttpClient] comportement bizarre, saute des catch()...
    Par iubito dans le forum Développement Web en Java
    Réponses: 4
    Dernier message: 04/02/2004, 16h25
  5. [Sybase] Comportement bizarre d'une table
    Par sdozias dans le forum Sybase
    Réponses: 4
    Dernier message: 03/02/2004, 11h39

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