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

Windows Forms Discussion :

[System.Net.Sockets.TcpListener] multi port


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 128
    Points : 67
    Points
    67
    Par défaut [System.Net.Sockets.TcpListener] multi port
    bonjour,

    je voulais savoir si il était possible de surveiller plusieurs port avec une seul instance de TcpListener ?

    D'autrepart, SharpDevelop me sort un message d'erreur a la compil de mon projet que j'ai bien du mal a comprendre :
    Program 'c:\Users\...\bin\Debug\monProjet.exe' does not have an entry point defined(CS5001)
    merci d'avance

  2. #2
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Ca voudrait dire que tu n'as pas de point d'entrée.
    Pour info, un point d'entrée est typiquement une méthode "main", vérifie la signature de celle-ci.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 128
    Points : 67
    Points
    67
    Par défaut
    oki, merci, j'avais enlevé l'attribut 'static' de la méthode 'main' pour pouvoir appeler une autre méthode avec this.maMethode, jvais trouvé autre chose.

    Sinon pour mon TcpListener, je vais devoir en faire autant que j'ai de port à surveiller ?

  4. #4
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Sauf erreur de ma part, oui.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 128
    Points : 67
    Points
    67
    Par défaut
    erf, oki

    je pose quand même mon code en espèrant qlq suggestion, car là jme retrouve avec 4 TcpListener, 4 TcpClient et 4 NetworkStream.

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    		protected override void OnStart(string[] args)
    		{
    			Log("Démarrage...");
    			ipLocal = IPAddress.Parse("127.0.0.1");
    			numPort = 135;
    			reception = new System.Net.Sockets.TcpListener(ipLocal,numPort);
    			numPort = 137;
    			reception2 = new System.Net.Sockets.TcpListener(ipLocal,numPort);
    			numPort = 138;
    			reception3 = new System.Net.Sockets.TcpListener(ipLocal,numPort);
    			numPort = 139;
    			reception4 = new System.Net.Sockets.TcpListener(ipLocal,numPort);
    			Log("TCPListener ok...");
     
    			reception.Start();
    			reception2.Start();
    			reception3.Start();
    			reception4.Start();
    			Log("TCPListener en écoute...");
     
    			ThreadStart st = new ThreadStart(ThreadSurveillance);
    		 	workerThread = new Thread(st);
    			ServiceStarted = true;
    			Log("Thread initialisé...");
    			workerThread.Start();		
    		}
     
    		protected void ThreadSurveillance()
    		{
    			Log("Entrée dans thread...");
    			try 
    			{
    				while (ServiceStarted)
    				{
    					TcpClient client = reception.AcceptTcpClient();
    			        TcpClient client2 = reception2.AcceptTcpClient();
    			        TcpClient client3 = reception3.AcceptTcpClient();
    			        TcpClient client4 = reception4.AcceptTcpClient();
     
    			        string data = "";
    			        byte[] bytes = new byte[1024];
     
    			        NetworkStream stream = client.GetStream();
    			        NetworkStream stream2 = client2.GetStream();
    			        NetworkStream stream3 = client3.GetStream();
    			        NetworkStream stream4 = client4.GetStream();
     
    			        int i;
     
    			        while((i = stream.Read(bytes, 0, bytes.Length))!=0) 
    			        {   
    			          data += System.Text.Encoding.ASCII.GetString(bytes, 0, i);
    			        }
     
    			        while((i = stream2.Read(bytes, 0, bytes.Length))!=0) 
    			        {   
    			          data += System.Text.Encoding.ASCII.GetString(bytes, 0, i);
    			        }
     
    			        while((i = stream3.Read(bytes, 0, bytes.Length))!=0) 
    			        {   
    			          data += System.Text.Encoding.ASCII.GetString(bytes, 0, i);
    			        }			        
     
    			        while((i = stream4.Read(bytes, 0, bytes.Length))!=0) 
    			        {   
    			          data += System.Text.Encoding.ASCII.GetString(bytes, 0, i);
    			        }			        
     
    			        data = data.ToUpper();
    			          ShowMsg(data);
     
    			        client.Close();
    			     }
    			}
    			catch (Exception ex)
    			{
    				Log(ex.Message +" / "+ ex.StackTrace);
    			}
    			Thread.CurrentThread.Abort();
    		}
    J'ai le pressentiment qu'il y a mieux à faire (bien que pour mon cas ça n'est pas très grave car je n'ais que 4 port à surveiller)

  6. #6
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Je suis presque sur, sans tester que les seuls clients qui peuvent se connecter sont ceux qui le font sur 135.

    Et quand bien meme, ils ne franchissent pas une ligne

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 128
    Points : 67
    Points
    67
    Par défaut
    merci de te pencher sur ma problèmatique, _skip

    Cependant, j'ai bien peur de ne pas avoir tt à fait saisie ta dernière remarque
    Je suis presque sur, sans tester que les seuls clients qui peuvent se connecter sont ceux qui le font sur 135.

    Et quand bien meme, ils ne franchissent pas une ligne
    tu pourrais me redire ça plus en détails et en d'autre therme stp

  8. #8
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Je suis presque sur, sans tester que les seuls clients qui peuvent se connecter sont ceux qui le font sur 135.
     
    Et quand bien meme, ils ne franchissent pas une ligne
    Euh.....Ca marchera jamais avec ce code

  9. #9
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    AcceptTcpClient(); est sauf erreur de ma part une méthode bloquante, ce qui veut dire que la méthode appelante cesse de s'exécuter jusqu a ce que quelqu'un se connecte.
    Si quelqu'un se connecte sur 135 il restera donc bloqué jusqu a ce que quelqu'un se connecte sur 137, en fait la seule façon d'atteindre les

    string data = "";
    byte[] bytes = new byte[1024];

    est que 4 personnes se connectent respectivement sur chacun des ports.
    Je me trompe?

  10. #10
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 128
    Points : 67
    Points
    67
    Par défaut
    ça se pourrais,

    en tout cas mon service marchait bien en mono port mais maintenant windows refuse de le démarrer(bien que la compile et l'installation se passe sans prob), je suis pas certains que ça viennent de la cela dit ...

    ps : le code que j'ai posté plus haut n'ait l'ensemble de ma classe, mais l'essentiel. Dites moi si vous voulez le code complet

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 128
    Points : 67
    Points
    67
    Par défaut
    Il me faut créer un thread pour chaque TcpListener, c'est ça ?

  12. #12
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    oui il te faut etre multitache si tu veux ecouter plusieurs ports

Discussions similaires

  1. Actualiser requete TcpClient() "System.Net.Sockets"
    Par vincent1890 dans le forum VB.NET
    Réponses: 7
    Dernier message: 18/11/2012, 18h54
  2. [c#] utilisation de System.Net.Socket
    Par TERRIBLE dans le forum Framework .NET
    Réponses: 1
    Dernier message: 21/12/2009, 09h35
  3. [System.Net.Sockets] Connexion via un proxy
    Par kendras dans le forum Développement
    Réponses: 15
    Dernier message: 17/02/2009, 14h52
  4. [VB.NET] [Socket] Tester si un port est ouvert ?
    Par Aspic dans le forum VB.NET
    Réponses: 25
    Dernier message: 07/01/2008, 09h25
  5. system.net : converti net.iphostentry en socket.socketexception
    Par gotenks007 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/12/2007, 20h06

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