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 de socket


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Par défaut Problème de socket
    Bonjour,

    je voudrais savoir quel serais le type de socket qui serai le plus adapter
    à un partie serveur capable en théorie de supporter 1000 connecté.

    Je comptai aussi faire un thread par client, est ce une mauvaise idée ?

    Merci d'avance de vos réponses.

    En vous remercient.

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    system.net.sockets.*
    ou wcf
    ou .net remoting

    les 3 doivent supporter des milliers de connexions
    un thread par client moi ca me choque pas ...
    sur les socket de base de toute façon il y a des méthodes asynchrones qui doivent correspondre à un thread en attente
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2006
    Messages : 30
    Par défaut
    1 Thread par client ? Ne crée pas explicitement un Thread à chaque client qui se connecte car je crois me souvenir que ça prends quelque chose une stack de 1MB par Thread. Si c'est le cas, fais le calcul: 1000 threads = 1000 MB = 1GB.

    J'imagine que tu pourrais avoir quelques Threads utilisés pour le traitement (nouvelle connexion, réception et envoi de messages). Le reste proviendra des Threads IO du ThreadPool grâce aux méthods asynchrones de la classe Socket (BeginWrite, BeginRead).

  4. #4
    Membre éclairé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Par défaut
    1MB par Thread ca parait beaucoup, mais c'est certain qui suivant la machine, ca pourra prendre pas mal de ressources, mais je voyais plutot ca du coté du CPU...

    Pour savoir quoi faire, il faut déja savoir si les Clients ont besoins d'etre en interraction permanente avec le serveur, ou si au contraire, il est possible de les mettres en attente, et de mettre en place un systeme de Queue, de file d'attente.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2006
    Messages : 30

  6. #6
    Membre éclairé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Par défaut
    En effet

    Ceci, dit on est d'accord sur le fait que, éviter 1000 threads d'un coup, c'est mieux . Problème, on a pas toujours le choix...

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    je viens de faire une appli qui créé 500 threads, elle prend 30Mo de ram
    sans le démarrage des threads je suis à 8Mo de ram
    donc certes ça prend un peu de ram, mais ca reste ridicule ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre éprouvé Avatar de swif79
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Par défaut
    Question ça ne risque pas d'être couteux en CPU (basculement de context) ?

  9. #9
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    tout dépend ce qu'on fait avec les threads et comment on gère les pauses

    m'enfin je ne suis pas sur qu'il y a débat à faire ici, ca reste à vérifier car je n'ai pas appronfondi les sockets en .net mais ce que j'ai cru en comprendre, c'est que quand un client se connecte, il faut créé un nouveau listener, donc avoir un listener par client
    et sur un listener pour avoir de l'asynchrone on fait .beginreceive en fournissant un callback qui tombera sur un thread séparé

    ce qui voudrait donc dire que même si on ne fait pas un thread par socket soit même le framework le fait de toute façon ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Problème de sockets
    Par the_penguin dans le forum Réseau
    Réponses: 8
    Dernier message: 13/04/2006, 19h19
  2. Problême de Socket avec un applet java (RMI/policy)
    Par Vesperal dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 12/04/2006, 12h00
  3. Réponses: 2
    Dernier message: 26/03/2004, 09h15
  4. [Kylix] Problème de socket
    Par RaygKross dans le forum EDI
    Réponses: 1
    Dernier message: 01/03/2004, 19h41
  5. Mysql ne se lance pas problème de socket
    Par Riko dans le forum Installation
    Réponses: 5
    Dernier message: 05/02/2004, 09h28

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