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 timeout sur getcontext


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Sp4ce
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 81
    Par défaut HttpListener timeout sur getcontext
    Hello,

    Alors mon message est un peu long, désolé.

    j'ai commence le C# et j'ai beaucoup codé en java avant alors je voudrais savoir quelque chose que je faisais souvent en java avant : mettre un timeout sur un listener de socket (ie, il écoute jusqu'au timeout et ensuite s'arrête)

    Je m'explique, voila ce que je faisais en pseudo code

    [Thread d'écoute]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while (listener.isListening) {
       Lock (Verrou) {
          listener.getResponse(); //appel bloquant jusqu'au TimeOut
          traitement de la réponse;
       }
    }
    [Thread principal]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Lock(Verrou)
       listener.isListening = false;
    Je fais ça pour arrêter correctement le thread d'écoute.

    maintenant un peu de C# pour vous montrer mon code actuel que je trouve moche. Je catch une exception quand le thread s'arrète.

    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
     
    /// <summary>
    /// Listen the port, in a thread in fact
    /// </summary>
    private void Listen()
    {
       try
       {
          while (_listener.IsListening)
          {
             HttpListenerContext ctx;
             ctx = _listener.GetContext(); // appel bloquant
             Thread thr = new Thread(ProcessRequest, 0);
             thr.Priority = ThreadPriority.Highest;
             thr.Start(ctx);
           }
       }
       catch (Exception ex)
       {
          // ya une erreur, le thread s'arrète
        }
    }
    et dans le thread principale, quand je ferme mon application

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    /// <summary>
    /// stop the service, close the listener
    /// </summary>
    public void Stop(){
       try
       {
          _listener.Stop();
        }
        catch (Exception ex)
        {
          // erreur
         }
    }
    Bon ok c'est un peu long et c'est de la pinaille, mais on est vendredi aprem, c'est aujourd'hui où jamais pour améliorer mon code

  2. #2
    Membre confirmé Avatar de Sp4ce
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 81
    Par défaut
    Bon je continue de regarder et j'ai l'impression que ce qui me gène c'est l'appel bloquant. Donc je pourrais faire un BeginGetContext.

    mais est-ce que qu'on lie le callback de traitement à tous les futurs appels entrant ou qu'au premier prochain traitement ?

Discussions similaires

  1. [VB6] Comment gérer un Timeout sur l'api HttpSendRequest
    Par marsup54 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 15/06/2006, 10h15
  2. Timeout sur POST formulaire avec checkbox
    Par shyangel dans le forum Langage
    Réponses: 16
    Dernier message: 11/05/2006, 12h59
  3. Comment définir un timeout sur une socket PHP ?
    Par N3odyme dans le forum Langage
    Réponses: 7
    Dernier message: 07/05/2006, 23h04
  4. Timeout sur read() avec termios et VTIME
    Par olivier857 dans le forum C
    Réponses: 9
    Dernier message: 05/04/2006, 09h30
  5. [Sockets] Timeout sur accept() ?
    Par MikB dans le forum Développement
    Réponses: 2
    Dernier message: 30/12/2003, 17h22

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