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 :

HTTPListener - TCPListener multithread


Sujet :

C#

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2002
    Messages : 6
    Points : 4
    Points
    4
    Par défaut HTTPListener - TCPListener multithread
    Bonjour,

    Je tente désepérement de créer un serveur HTTP multithread.
    Mon but est de recevoir des demandes via un port défini (8080) de faire un travail et de leurt répondre.

    Mon problème est que le travail à faire dure plusieurs secondes, j'ai donc essayé de faire du multithread, mais là aussi j'ai des problèmes.

    Je lance dans un backgroundworker avec un httplistener.getcontext()
    Quand j'ai un context, je lance un thread pour le gérer.
    Mon problème est que sur le port 8080 je ne reçois le context suivant que quand j'ai fait un close
    response = context.Response;
    ...
    output = response.OutputStream;
    output.Write(buffer, 0, buffer.Length);
    output.Close();

    Donc en fait il ne tourne pas en multithread mais gère les arrivées les unes après les autres.

    J'ai essayé de me passer du HTTPListener et de le faire avec un TCPListener mais j'ai le même problème, qualqu'un peut-il m'aider?

    Merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 51
    Points : 62
    Points
    62
    Par défaut Multithread activé en réseau...
    Bonjour,

    pour répondre à un besoin similaire, j'ai développé il y a quelques temps 2 services, un utilisant un TCPChannel ouvert, et utilisant un pool de Threads pour l'exécution en parallèle des différentes taches. Le second, était un webservice transmettant les requêtes de travail au service précédent.

    Cordialement.

    Guillaume MARQUES

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2002
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci mais on me demande un webserver, je ne pense donc pas qu'un webservice convienne
    mais paux-tu expliquer comment tu as réalisé cela?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 51
    Points : 62
    Points
    62
    Par défaut WebService / Service...
    Un WebService est contenu dans un site web.

    Ce WebService est appelé par une application externe (soit web, soit winform) à distance ou en local. Ce webservice appelle ensuite un service Windows gérant les Threads de travail (dans un ThreadPool). La communication entre le webservice et le service windows se fait via TcpChannel

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2002
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    oui je comprends mais je ne vois pas ce que cela apporte,
    Le problème ne va-t'il pas se trouver repporter sur le TCPChannel?

    Mon porblème est que le listener TCP ou http ne prend pas d'autre "client" tnat que je ne l'ai pas fermé, ici le problème sera juste reporté dans le TCPChannel non?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 51
    Points : 62
    Points
    62
    Par défaut
    En fait, dès que je reçois un appel pour du traitement, le ThreadPool démarre un nouveau Thread pour gérer ce travail, si une deuxième demande arrive avant que le premier Thread n'est terminé, un deuxième thread sera créé.

    Cordialement

    Guillaume MARQUES

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2002
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    oui c'est ce que je fais aussi, mais j'ai avanceé sur mon problème:
    Si j'ai un client C#
    TcpClient client = new TcpClient("localhost", 8080);
    s = client.GetStream();
    s.Read(...

    tout va bien, il me lance bien des thread, ...
    Si maintennat je me connecte à mon application via un browser web (firefox) le listener ne reprend pas la main.
    une idée??

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2002
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    je pense avoir résolu mon problème.

    En fait j'ouvrai 2 fois localhost:8080 sur un browser dans des onglets différents, et je suppose que firefox les gère alors les uns après les autres!! d'où mon problème.

    Merci pour vos réponses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [tcplistener]fonction bloquante et multithread
    Par ronan99999 dans le forum C#
    Réponses: 1
    Dernier message: 23/05/2007, 16h02
  2. [WinAPI C++] MultiThreading et PostMessage
    Par Gruik dans le forum Windows
    Réponses: 7
    Dernier message: 29/03/2004, 16h58
  3. [WinAPI C++] MultiThreading?
    Par Gruik dans le forum Windows
    Réponses: 2
    Dernier message: 25/03/2004, 01h08
  4. [Win32]App multithread
    Par billyboy dans le forum Windows
    Réponses: 5
    Dernier message: 25/09/2003, 10h57
  5. Multithreading sous HP Ux 11
    Par pykoon dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 19/10/2002, 00h36

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