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 :

[C#] Création d'un serveur multi-threader


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 34
    Par défaut [C#] Création d'un serveur multi-threader
    Bonjour à tous !!!
    Comme le dit mon titre je cherche à faire une application serveur qui permette d'accépter plusieur client... pour cela j'utilise un thread qui se déclenche au moment ou un client c'est connecter. Le seul soucis c'est que je n'arrive pas à voir comme le programme va pouvoir différencier les différent objet par la suite....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public void initialiserreseau(int port)
    {
    while (run)
     
    {<div style="margin-left:40px">Tcplistener=new TcpListener(...)
    tcplistener.start();
    Sock=tcplistener.AcceptSocket()
    LeThread.start()//ici la fonction appelé permet la gestion des clients</div>}
    }
    Je sais qu'en java il était possible d'implémenter une interface runnable qui permettait de considérer un objet comme un thread ce qui facilitait beaucoup la prog... est-ce qu'il existe un moyen similaire en c# où comment faire pour coder un programme joliment ? merci pour votre aide

  2. #2
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Tu devrais aller sur ce poste où on avait discuté d'un serveur multi-threads permettant de gérer individuellement des clients connectés par socket.

    http://www.developpez.net/forums/sho...d.php?t=249177

  3. #3
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 34
    Par défaut
    Merci beaucoup pour ce lien je regarde ça en détail tout de suite !!!!

    EDIT> Je viens de regarder et ça me convient mais c'est justement la partie du thread que j'ai du mal à comprendre... si je cré un thread et que le serveur attend un autre client. ne risque t'il pas de perdre les infos du premier client ????

    je m'explique j'ai un objet avec un attribut socket....

    dans le processus mère la socket attend un client.
    ensuite quand un client est connecté on créer un thread pour le client avec la socket en cours.
    dans le même temps le serveur boucle et attend un nouveau client avec la même socket....
    je pense qu'il va y avoir un pb non ???

    Merci pour votre aide !!!

  4. #4
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Tu as raison, ce poste ne parle pas d'une gestion de plusieurs client, je pensais que si de mémoire.

    En fait, quand ton serveur reçoit une socket client car un client vient de se connecter, tu dois "donner" cette socket au nouveau thread. Le thread mère n'a plus qu'à se remettre en attente de l'arrivée d'un nouveau client.

    Maintenant, comment passer la socket client au nouveau thread... Le soucis c'est que la technique de créer un thread directement avec ThreadStart ne permet pas de passer des paramètres... La technique est donc de créer un classe qui va pouvoir recevoir tous les paramètres que tu auras décidé et c'est aussi cette classe qui contiendra le thread en activité.

    Au final, tu auras dans ton programme principale un objet de type ArrayList (par exemple) qui contiendra x objets dont j'ai parlé... Chaque objet communiquant avec un client.

    Pour plus d'infos sur cette technique, c'est par ici :

    http://emerica.developpez.com/csharp/threads/#LB

  5. #5
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 34
    Par défaut
    Ok je vois mieux le principe maintenant !!!
    Merci en gros il faudrait que je rajoute une classe client contenant une socket et qui permette de recevoir des paramètre à la création d'un thread !!!
    Merci pour toutes ces infos !!!!

Discussions similaires

  1. création d'un serveur multi client (problème de thread)
    Par Benyou dans le forum Threads & Processus
    Réponses: 5
    Dernier message: 21/08/2013, 01h27
  2. création d'un serveur multi-thread
    Par james23 dans le forum Multithreading
    Réponses: 9
    Dernier message: 30/03/2009, 17h11
  3. Architecture serveur mmorpg multi threader.
    Par yamashi dans le forum Réseau et multijoueurs
    Réponses: 5
    Dernier message: 05/01/2009, 09h23
  4. question article "Création d'un serveur multi-threads en C++"
    Par contremaitre dans le forum Threads & Processus
    Réponses: 2
    Dernier message: 20/06/2008, 12h01
  5. Création d'un Serveur Multi Client
    Par N*E*R*D dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 16/03/2004, 17h13

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