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

Framework .NET Discussion :

[Windows Server 2000] HttpListener & PlatformNotSupportedException


Sujet :

Framework .NET

  1. #21
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    si, sûrement... mais pour ça tu devrais plutôt demander dans le forum Java

  2. #22
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 201
    Points : 55
    Points
    55
    Par défaut
    C'est fou qu'on ne puisse pas developper une application aussi simple sous Windows 2000.

    Il doit y avoir d'autre moyen. Comment faisait les développeurs avant l'arrivé de Windows XP SP2 ?

    PS : En java ca prend 2 lignes ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ServerSocket server = new ServerSocket(int port);
    Socket client = server.accept();

  3. #23
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par gufra Voir le message
    PS : En java ca prend 2 lignes ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ServerSocket server = new ServerSocket(int port);
    Socket client = server.accept();
    Pour écrire ça en .Net, ça prend aussi deux lignes, (EDIT : trois) mais je ne vois pas du tout le rapport avec ta demande initiale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                    TcpListener listener = new TcpListener(port); //80 pour http
                    listener.Start();
                    Socket client = listener.AcceptSocket();
    Je te rappelle que tu cherchais un Listener Http, donc capable de traiter le protocole Http; maintenant du dis que l'écoute sur un port te suffit; désolé mais c'est le jour et la nuit.

    Quant à ta comparaison, il faudrait examiner sa validité de près : tu es sur que tes deux lignes fonctionnent aussi sur une JVM d'il y a 7 ans ?

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  4. #24
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 201
    Points : 55
    Points
    55
    Par défaut
    Il te manque un listener.Start() avant l'AcceptSocket.

    Est-ce si difficile de spécifier qu'on écoute sur ce port mais pour un protocole particulier (HTTP) ?

  5. #25
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par gufra Voir le message
    Il te manque un listener.Start() avant l'AcceptSocket.
    Ok, j'ai oublié.

    Est-ce si difficile de spécifier qu'on écoute sur ce port mais pour un protocole particulier (HTTP) ?
    Le TcpListener, il écoute des protocole Tcp; la façon dont tu traites le contenu Tcp à plus haut niveau l'indiffère complètement.

    Tu lui dit d'écouter sur le 80, il écoute sur le 80; il n'a aucune raison d'effectuer une quelconque validation relevant d'une couche supérieure.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  6. #26
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Quelques rappels théoriques sur l'architecture des réseaux seraient utiles je crois...
    http://fr.wikipedia.org/wiki/Modèle_OSI

  7. #27
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Quelques rappels théoriques sur l'architecture des réseaux seraient utiles je crois...
    http://fr.wikipedia.org/wiki/Modèle_OSI
    Peut être, mais je ne suis pas sur que une comparaison modèle OSI (*) vs stack TCP soit précisément le rappel dont il ait besoin.
    Accessoirement, il y a quelques erreurs et imprécisions dans l'article : X25 est en couche 2 alors que ce protocole opère (opérait )en couche 3; la couche 2 habituellement utilisée dans ce cas (LAPB ou LAPD) étant omise.(même si elle n'est réalité qu'un sous-ensemble de HDLC, qui lui est mentionné).

    Sans même parler de l'inventaire à la Prevert de la couche 1 : on mélange du CSMA/CD (vrai "couche 1") avec de la "paire torsadée" (sur laquelle, selon toute probabilité, on va utiliser du CSMA/CD).

    (*) ca m'a toujours beaucoup amusé que OSI de l'ISO donne en français ISO de l'OSI

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  8. #28
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    X25 est en couche 2 alors que ce protocole opère (opérait) [...]
    Opère encore, mon client l'utilise par exemple
    C'est notamment utilisé pour la communication entre les équipements des opérateurs de téléphonie mobile
    Bref, je mentionais cet article juste pour rappeler que TCP est un protocole de transport (couche 4) alors que HTTP est un protocole d'application (couche 7).
    Mais c'est vrai que l'article contient quelques énormités, comme HTML dans la couche 6... depuis quand HTML est un protocole ???

  9. #29
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 201
    Points : 55
    Points
    55
    Par défaut
    J'ai une autre question pour mon programme.

    Il doit s'executer sur un server, mais lorsque je démarre mon programme dans une session, dès que je ferme la session, mon programme se ferme aussi.

    Comment faire pour que cette application soit lancé dès le démarrage du server, qu'un session soit ouverte ou non, et surtout qu'il reste ouvert lorsqu'on ferme une session ?

  10. #30
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Le transformer en service (ce qui est normal pour une application serveur).

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  11. #31
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 201
    Points : 55
    Points
    55
    Par défaut
    Comment puis-je faire ça facilement ?

  12. #32
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Créer un projet de type Service Windows, ajouter un serviceInstaller (pour ne pas avoir à créer un programme d'installation spécifique - cela se fait via un lien en bas du propertygrid) et créer un point d'entrée d'où appeler la DLL qui contient la logique de communication de ton programme actuel.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  13. #33
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 201
    Points : 55
    Points
    55
    Par défaut
    J'ai créer un projet de type "Windows Service" et je lui ai rajouter un item de type "Installer Class" ainsi qu'un référence au projet que je veux faire tourner en permanence.

    J'ai donc :

    Service1.cs
    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
    public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }
     
        protected override void OnStart(string[] args)
        {
        }
     
        protected override void OnStop()
        {
        }
    }
    Installer1.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [RunInstaller(true)]
    public partial class Installer1 : Installer
    {
        public Installer1()
        {
            InitializeComponent();
        }
    }
    Quand j'essaie de lancer cette application (comme décrite ci dessus), j'obtiens l'erreur :
    Impossible de démarrer un service à partir de la ligne de commande ou d'un débogueur. Un service Windows doit tout d'abord être installé (en utilisant installutil.exe), puis démarré avec l'Explorateur de serveurs, l'outil d'aministration des services Windows ou la command NET START.
    Questions :
    1. Est-ce dans la méthode "OnStart" de la class "Service1" que je dois lancer le formulaire qui doit tourner en permanence?
      (new Scalco___IDoc.iDocForm()
    2. Comment dois-je faire pour installer le service ?

  14. #34
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    - Dans la méthode OnStart, tu démarre le thread qui va écouter ton port TCP.
    Tu dois démarrer un thread, car la méthode OnStart doit retourner, sinon on considère que le service est en time-out (il me semble).

    (je ne comprends pas ton truc de formulaire ...).

    - pour installer le service, tu fais comme le dit Mr Bill, utilise la commande installutil (qui est sur le répertoire du framework, de mémoire).

    - Dans la méthode OnStop, du fais ce qu'il faut pour arrêter proprement ton traitement.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  15. #35
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 201
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Je ne comprends pas ton truc de formulaire
    Mon application est composé d'un formulaire, c'est ce formulaire qui doit être lancé au démarrage.

  16. #36
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Alors, là, je n'ai pas la moindre idée.

    L'idée d'une application serveur avec un formulaire est assez étrange en elle même : qui dit formulaire, dit interaction utilisateur, or il n'est pas logique de vouloir une interaction utilisateur hors session.

    Avant tu nous parlais d'une écoute du port Http, tu n'as jamais parlé d'une interaction utilisateur.

    Ceci dit, un service peut interagir avec le bureau, à condition de cocher la case qui va bien, et de le faire tourner avec le compte LocalSystem.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  17. #37
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 201
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    L'idée d'une application serveur avec un formulaire est assez étrange en elle même : qui dit formulaire, dit interaction utilisateur, or il n'est pas logique de vouloir une interaction utilisateur hors session.
    En fait le formulaire contient une liste avec des logs (demande du client). Et l'application se réduit en "notifyIcon" près de l'horloge.

    J'ai suivi le tutoriel suivant : http://webman.developpez.com/article...swindows/vbnet

    J'arrive a créer le service et à l'installer.
    Mais lorsque je le lance, mon formulaire ne se lance pas.
    Alors que dans le méthode OnStart de mon service, j'ai la ligne de code suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    form = new Scalco___IDoc.iDocForm();
    Une petite idée ?

  18. #38
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par gufra Voir le message
    Une petite idée ?
    Aucune, car je refuse l'idée même de mettre un formulaire dans un service.

    Pour un cas comme le tient, j'aurais créer mon service sans formulaire et créé une application cliente avec le formulaire interrogeant le service (via WCF, ou Net.Remoting).

    Ceci dit il y a peut être moyen d'embarquer le formulaire dans le service, mais je ne sais pas comment.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  19. #39
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 201
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Pour un cas comme le tient, j'aurais créer mon service sans formulaire et créé une application cliente avec le formulaire interrogeant le service (via WCF, ou Net.Remoting).
    Net.Remoting
    Pourrais tu me décrire un peu plus cette méthode ?
    (J'utilise le .NET Framework 2.0)

    Dans le tutorial http://webman.developpez.com/article...windows/vbnet/, on explique comment démarrer, arreter, suspendre et lister les services windows.

    Comment faire par exemple pour récupérer des messages d'erreurs à partir d'un service et de les mettre ensuite dans une List dans un formulaire par ex.

Discussions similaires

  1. WINDOWS SERVER 2000 et protection de dossier
    Par clara.57000 dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 02/04/2007, 07h28
  2. problème avec msxml / windows server 2000
    Par emploidottv dans le forum ASP
    Réponses: 2
    Dernier message: 26/03/2006, 14h33
  3. Script de redemarrage de windows server 2000
    Par perturabo dans le forum Windows
    Réponses: 2
    Dernier message: 20/01/2006, 08h20
  4. WMI et Windows server 2000
    Par kasjacques dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 17/10/2005, 22h41

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