Serveur HTTP (httplistener)

vr3h Messages postés 164 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 9 octobre 2006 - 11 mai 2006 à 11:45
vr3h Messages postés 164 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 9 octobre 2006 - 11 mai 2006 à 15:36
Bonjour,
voilà j'ai codé en .Net avec le framework 2.0 un tres petit serveur http, le problème que j'ai est le suivant. Le serveur http est créé, et quand je lance une requette dans l'explorateur de la machine où je lance le serveur, j'accède au site prévu et tout, par contre, si on veut y accéder depuis un autre ordinateur, le serveur ne reçoit aucune requete. aussi quelqu'un peut il me dire si ça vient de l'architecture réseau où je lance le programme ou si ca vient du programme lui meme. Vous trouverez ci-dessous le code que j'ai tappé (attention c'est juste un début, un essai pour voir si ça marche ou pas), je l'ai fait avec VB.Net 2005 Express, et il faut créer une application console.

Imports System.Net
Imports System.IO

Module Module1
Public Racine() As String = {"http://172.16.2.9/"}
Public Const LocalRacine As String = "c:"
Public ILCommand As String
Public Comm()
Public i As Int16

Dim Server As System.Net.HttpListener
Dim Context As System.Net.HttpListenerContext

Sub Main()
Server = New System.Net.HttpListener()
Server.AuthenticationSchemes = Net.AuthenticationSchemes.Basic
Server.UnsafeConnectionNtlmAuthentication = True
Server.Realm = "Entrez un pseudo :"
For i = 0 To UBound(Racine)
Server.Prefixes.Add(Racine(i))
Next i
Server.Start()
Server.BeginGetContext(AddressOf ReceivingRequest, Server)
Console.WriteLine("Host : ok")
Do
ILCommand = Console.ReadLine()
Comm = ILCommand.Split(" ")
If Comm(0).ToLower = "exit" Then Exit Do
Loop
Server.Stop()
Server.Close()
End Sub

Public Sub ReceivingRequest(ByVal Arg As System.IAsyncResult)
If Server.IsListening = False Then Exit Sub
Context = Server.EndGetContext(Arg)
Dim Url As String = Context.Request.Url.ToString.ToLower
Console.WriteLine(Url)
For i = 0 To UBound(Racine)
If Url = Racine(i) Then
Console.WriteLine(Context.User.Identity.Name)
End If
Next i
Dim LocalFileName As String = Url
For i = 0 To UBound(Racine)
LocalFileName = LocalFileName.Replace(Racine(i), LocalRacine)
Next i
LocalFileName = LocalFileName.Replace("/", "")
If Strings.Right(LocalFileName.ToLower, 3) <> "htm" And _
Strings.Right(LocalFileName.ToLower, 3) <> "jpg" And _
Strings.Right(LocalFileName.ToLower, 3) <> "gif" Then
If Strings.Right(LocalFileName, 1) <> "" Then LocalFileName &= ""
LocalFileName &= "index.htm"
End If
Console.WriteLine(LocalFileName)
Dim WebFile As System.IO.FileStream
Dim Buffer As Byte()
Try
WebFile = New System.IO.FileStream(LocalFileName, FileMode.Open)
ReDim Buffer(WebFile.Length)
WebFile.Read(Buffer, 0, WebFile.Length)
WebFile.Close()
Catch err As System.Exception
Buffer = System.Text.Encoding.UTF32.GetBytes("<HTML><TITLE>Page Non Trouvée</TITLE> Page non trouvée : " & LocalFileName & " : " & Context.User.Identity.Name & " </HTML>")
End Try
Context.Response.ContentLength64 = Buffer.Length
Context.Response.OutputStream.Write(Buffer, 0, Buffer.Length)
Context.Response.Close()
Server.BeginGetContext(AddressOf ReceivingRequest, Server)
End Sub
End Module

1 réponse

vr3h Messages postés 164 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 9 octobre 2006
11 mai 2006 à 15:36
En fait le code est bon, puisque le serveur lancé sur une autre machine est accessible depuis tous les autres postes... ce doit donc être un problème de configuration de ma machine
0
Rejoignez-nous