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 :

Serveur Web en C#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Par défaut Serveur Web en C#
    Bonjour,

    je cherche à intégrer à mon logiciel (codé en c#) un serveur web simple.

    Le but est le suivant:

    deux ordinateurs en réseau local, un avec l'appli qui contient - entre autre - le serveur web et une page web (index.html), l'autre avec une ihm en c# qui inclut un controle webbrowser qui doit afficher la page web index.html située sur l'ordinateur serveur.

    J'arrive sans probleme à utiliser le webbrowser (c'est trivial), cependant, je n'arrive pas à trouver/developper ou meme comprendre le developpement d'un serveur web. La seule fonction dont j'ai besoin c'est l'affichage d'une page html intégrant un mediaplayer en flash.

    Est-ce possible ? Quelqu'un saurait il comment faire ?

    Merci d'avance pour votre aide

  2. #2
    Membre Expert Avatar de LaChips
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 109
    Par défaut
    Bonjour,
    Pourquoi ne pas utiliser le serveur IIS intégré à windows?
    ou même Apache...

  3. #3
    Membre éclairé Avatar de psycho_38
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 55
    Par défaut
    Bonjour,

    Visual Studio intègre meme un mini serveur web (cassini)

  4. #4
    Membre Expert Avatar de LaChips
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 109
    Par défaut
    Citation Envoyé par psycho_38
    Bonjour,

    Visual Studio intègre meme un mini serveur web (cassini)
    Oui mais il n'est utilisable qu'a des fins de débugage, il me semble bien qu'il n'est pas possible de l'intégrer par exemple dans un package d'une application

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 19
    Par défaut
    namespace MDA.HTTPServer
    {

    public class httpServer
    {

    public static void SimpleListenerExample(string[] prefixes)
    {
    if (!HttpListener.IsSupported)
    {
    Console.WriteLine("Windows XP SP2 or Server 2003 is required to use the HttpListener class.");
    return;
    }


    // Create a listener.
    HttpListener listener = new HttpListener();
    listener.AuthenticationSchemes = AuthenticationSchemes.None;
    // Add the prefixes.
    foreach (string s in prefixes)
    {
    listener.Prefixes.Add(s);
    }

    listener.Start();
    Console.WriteLine("Listening...");

    // Note: The GetContext method blocks while waiting for a request.
    HttpListenerContext context = listener.GetContext();
    HttpListenerRequest request = context.Request;
    // Obtain a response object.
    HttpListenerResponse response = context.Response;
    // Construct a response.
    string responseString = "Hello world!";
    byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
    // Get a response stream and write the response to it.
    response.ContentLength64 = buffer.Length;
    System.IO.Stream output = response.OutputStream;
    output.Write(buffer, 0, buffer.Length);
    // You must close the output stream.
    output.Close();
    listener.Stop();
    }
    public static void Main()
    {
    string[] prefixes = { "http://localhost:8080/" };
    SimpleListenerExample(prefixes);
    System.Console.WriteLine("Done...");
    System.Console.ReadLine();
    }
    }
    }

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Par défaut
    Tout d'abord, merci pour ces réponses,

    je n'ai pas eu le temps de tester, mais effectivement, je pensais me rabattre sur la solution cassini, cependant, je ne savais pas qu'il était intégré à VS.

    Mais j'ai encore quelques questions...
    par exemple, où dois-je mettre mon fichier index.html contenant la page que je souhaite afficher ?

    Avec le code que tu m'as posté, il me suffit juste d'appeler la page http://ip-du-server/index.html ensuite pour qu'il s'affiche dans mon controle webbrowser ?

    Merci par avance

  7. #7
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Citation Envoyé par LaChips
    Oui mais il n'est utilisable qu'a des fins de débugage, il me semble bien qu'il n'est pas possible de l'intégrer par exemple dans un package d'une application
    Si si, c'est possible... Tu l'installe au moment ou ton application se lance puis tu commence à le manipuler, c'est pas très dur... Seulement c'est uniquement "à usage interne" dirons-nous... Sinon, faut passer pas APACHE/ISS --> Redirection sur CASSINI

  8. #8
    Membre confirmé Avatar de wizad
    Profil pro
    Étudiant
    Inscrit en
    Août 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2004
    Messages : 103
    Par défaut
    rhoo le détérage de sujet... (quoi non mais euh j'y suis pour rien.... )

  9. #9
    Membre éclairé Avatar de psycho_38
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 55
    Par défaut
    Citation Envoyé par meche
    Bonjour,

    je cherche à intégrer à mon logiciel (codé en c#) un serveur web simple.

    Le but est le suivant:

    deux ordinateurs en réseau local, un avec l'appli qui contient - entre autre - le serveur web et une page web (index.html), l'autre avec une ihm en c# qui inclut un controle webbrowser qui doit afficher la page web index.html située sur l'ordinateur serveur.

    J'arrive sans probleme à utiliser le webbrowser (c'est trivial), cependant, je n'arrive pas à trouver/developper ou meme comprendre le developpement d'un serveur web. La seule fonction dont j'ai besoin c'est l'affichage d'une page html intégrant un mediaplayer en flash.
    Excuse moi mais j'arrive pas a saisir l'interet d'utiliser un serveur web (cassini ou IIS qui sont censé en gros d'interpréter tes pages aspx et de les transformer en page html)
    Si tu veux juste afficher une page "index.html" le control WebBrowser devrait emplement répondre a tes besoins ??

    Un navigateur web interprète tout seul les pages html (c'est son but )

    Peut être ai je mal compris ce que tu cherchais ???

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Par défaut
    alors, je développe un peu ce que je cherche:

    j'ai une appli sur un ordi, où j'affiche un mediaplayer en flash qui me fait du streaming audio. J'ai donc pensé l'intégrer dans une page web pour simplifier le streaming (surtout que j'ai besoin d'un fichier playlist en xml généré par l'ordi serveur auquel le flash a accès).

    Je pense donc que la solution serveur web est ce qu'il me faut.

    Si tu penses à une autre solution, n'hesite pas à m'en faire part!

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 19
    Par défaut
    pour une page index.htm qui est dans le repertoire de l'appli
    il faut ajouter cela

    String LocalFileName = "index.htm";
    System.IO.FileStream WebFile = new System.IO.FileStream(LocalFileName, FileMode.Open);
    byte[] Buffer = new byte[WebFile.Length];
    WebFile.Read(Buffer, 0, Buffer.Length);
    WebFile.Close();
    HttpListenerResponse response = context.Response;
    response.ContentLength64 = Buffer.Length;
    System.IO.Stream output = response.OutputStream;
    output.Write(Buffer, 0, Buffer.Length);
    output.Close();

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

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par meche
    Bonjour,

    je cherche à intégrer à mon logiciel (codé en c#) un serveur web simple.
    Pourquoi ne pas utiliser le mini-serveur que consitue le composant HttpListener ?

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Par défaut
    Je n'arrive pas à comprendre comment utiliser le composant HTTPListener en fait ... Peut-il à lui seul me permettre d'afficher une page web sur un pc distant ?

    Imaginons, j'ai un PC avec mon appli client en c# qui integre un browser web, qui affiche une page web (donc située sur mon serveur) intégrant un mediaplayer en flash qui diffuse de la musique située sur le serveur (n'importe où sur le serveur d'ailleurs, pas dans un dossier spécifique).

    Est ce que HTTPListener coté serveur suffit ? où dois-je mettre ma page web ? j'ai trop de mal à comprendre comment fonctionne ce composant ...

    Merci pour vos réponses !

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 19
    Par défaut
    Oui,

    je te donne un code, il te faut une forme et deux boutons pour l'exemple.
    tu le généres, puis tu mets l'exe dans le même dossier que tes pages html.
    ta page de départ doit se nommer index.htm, mais tu peux le changer dans le code

    voila :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    using System;
    using System.Windows.Forms;
    using System.IO;
    using System.Net;
     
     
    namespace HttpListenerTest
    {
        public partial class Form1 : Form
        {
            private System.Net.HttpListener httpListener = new System.Net.HttpListener();
            private static System.Threading.AutoResetEvent listenForNextRequest = new System.Threading.AutoResetEvent(false);
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button2_Click(object sender, EventArgs e)
            {
                if (httpListener.Prefixes.Count == 0)
                {
                    httpListener.Prefixes.Add("http://+:80/"); 
                }
                httpListener.Start();
                System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(Listen));
            }
     
            private void Listen(object state)
            {
                while (httpListener.IsListening)
                {
                    httpListener.BeginGetContext(new AsyncCallback(ListenerCallback), httpListener);
                    listenForNextRequest.WaitOne();
                }
            }
     
            private static void ListenerCallback(IAsyncResult ar)
            {
                System.Net.HttpListener hl = ar.AsyncState as System.Net.HttpListener;
                System.Net.HttpListenerContext context = null;
               if (hl == null) return;
                try
                {
                    context = hl.EndGetContext(ar);
                }
                catch   //(Exception ex)
                {
                    return;
                }
                finally
                {
                    listenForNextRequest.Set();
                }
     
                if (context == null) return;
                System.Net.HttpListenerRequest request = context.Request;
     
                if (request.HasEntityBody)
                {
                    using (System.IO.StreamReader sr = new System.IO.StreamReader(request.InputStream, request.ContentEncoding))
                    {
                        string requestData = sr.ReadToEnd();
                    }
                }
     
                using (System.Net.HttpListenerResponse response = context.Response)
                    {
                    string path = Environment.GetCommandLineArgs()[0];
                    string dirpath = path.Substring(0, path.LastIndexOf(@"\"));
                    string LocalFileName = LocalFileName = dirpath + @"\" + "index.htm";
                    if (request.Url.ToString().Substring(request.Url.ToString().LastIndexOf("/") + 1) != "")
                        {
                        LocalFileName = dirpath + @"\" + request.Url.ToString().Substring(request.Url.ToString().LastIndexOf("/") + 1);
                        }
                    System.IO.FileStream WebFile = new System.IO.FileStream(LocalFileName, FileMode.Open);
                    byte[] buffer = new byte[WebFile.Length];
                    WebFile.Read(buffer, 0, buffer.Length);
                    WebFile.Close();
                    response.ContentLength64 = buffer.LongLength;
                    response.OutputStream.Write(buffer, 0, buffer.Length);
                    }
            }
     
            private void button3_Click_1(object sender, EventArgs e)
            {
                httpListener.Stop();
            }
     
     
        }
    }

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Par défaut
    Merci !!

    alors j'ai intégré ce composant à mon projet, cependant, j'ai une erreur etrange ...

    au niveau de httpListener.Start(); j'ai :"L'exception HttpListenerException n'a pas été gérée", et en dessous, "Le processus ne peut pas accéder au fichier car ce fichier est utilisé par un autre processus".

    C'est assez incompréhensible

  16. #16
    Membre confirmé Avatar de wizad
    Profil pro
    Étudiant
    Inscrit en
    Août 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2004
    Messages : 103
    Par défaut
    Désolé pour le retard. Cette erreur indique que le port est déja utilisé par une autre application. (IIS, Apache,...) Essai un autre port cela devrait marcher sans aucun soucis.

Discussions similaires

  1. Wine et serveur Web
    Par GLDavid dans le forum Applications et environnements graphiques
    Réponses: 6
    Dernier message: 26/06/2004, 00h19
  2. CORBA sur serveur web en local
    Par barberot dans le forum CORBA
    Réponses: 8
    Dernier message: 31/03/2004, 08h28
  3. Exploitation de base sur un serveur Web
    Par Oz-WereWolf dans le forum Installation
    Réponses: 10
    Dernier message: 07/03/2004, 22h52
  4. mise en place serveur web intranet
    Par gui4593 dans le forum Installation
    Réponses: 7
    Dernier message: 01/01/2004, 18h18

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