2011-12-28 18 views
1

私はlistener.GetContext()をうまく待っているHTTPLISTENERを作成するこのコードを持っています。私が作成したHTTPLISTENERとどのように通信しますか?

これを別のVBアプリケーションからどのように通信できますか?私はHTTPRISTENERの例で使用しているURIで動作するようにWebRequest.Createを取得することはできません。第二のアプリからのこのコード行が動作していません:それはあるとしてあなたは接頭辞を使用することはできません

Imports System.Net 
Imports System.Globalization 

Public Class Form1 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 

    Dim prefixes() As String = {"http://*:8080/HttpListener/"} 

    ProcessRequests(prefixes) 

End Sub 

Private Sub ProcessRequests(ByVal prefixes() As String) 
    If Not System.Net.HttpListener.IsSupported Then 
     Console.WriteLine(_ 
      "Windows XP SP2, Server 2003, or higher is required to " & _ 
      "use the HttpListener class.") 
     Exit Sub 
    End If 

    ' URI prefixes are required, 
    If prefixes Is Nothing OrElse prefixes.Length = 0 Then 
     Throw New ArgumentException("prefixes") 
    End If 

    ' Create a listener and add the prefixes. 
    Dim listener As System.Net.HttpListener = _ 
     New System.Net.HttpListener() 
    For Each s As String In prefixes 
     listener.Prefixes.Add(s) 
    Next 

    Try 
     ' Start the listener to begin listening for requests. 
     listener.Start() 
     Console.WriteLine("Listening...") 

     ' Set the number of requests this application will handle. 
     Dim numRequestsToBeHandled As Integer = 10 

     For i As Integer = 0 To numRequestsToBeHandled 
      Dim response As HttpListenerResponse = Nothing 
      Try 
       ' Note: GetContext blocks while waiting for a request. 
       Dim context As HttpListenerContext = listener.GetContext() 

       ' Create the response. 
       response = context.Response 
       Dim responseString As String = _ 
        "<HTML><BODY>The time is currently " & _ 
        DateTime.Now.ToString(_ 
        DateTimeFormatInfo.CurrentInfo) & _ 
        "</BODY></HTML>" 
       Dim buffer() As Byte = _ 
        System.Text.Encoding.UTF8.GetBytes(responseString) 
       response.ContentLength64 = buffer.Length 
       Dim output As System.IO.Stream = response.OutputStream 
       output.Write(buffer, 0, buffer.Length) 

      Catch ex As HttpListenerException 
       Console.WriteLine(ex.Message) 
      Finally 
       If response IsNot Nothing Then 
        response.Close() 
       End If 
      End Try 
     Next 
    Catch ex As HttpListenerException 
     Console.WriteLine(ex.Message) 
    Finally 
     ' Stop listening for requests. 
     listener.Close() 
     Console.WriteLine("Done Listening...") 
    End Try 
End Sub 

End Class 

答えて

1

Dim request As WebRequest = WebRequest.Create(prefixes(0)) 

ここでは、コードです!リスナーに接続するには、「*」を「127.0.0.1」に置き換える必要があります。

は "http:// *:8080/HttpListenerを/" あなたの接頭辞のようなものであれば

次に、あなたのHTTPリスナーに接続できるようにするには、以下のURLを呼び出す必要があります:

」 http://127.0.0.1:8080/HttpListener/」 、-OR - "にhttp:// localhost:8080/HttpListenerを/" 私はこのことができます願ってい

0

:-)最も簡単な方法HttpListenerが実際にリスニングしていることを確認するブラウザでリッスンしているURLに移動します。見つからない場合は404エラーが発生します。

リスナーが動作していることを確認したら、WebClientを使用してコード内で通信してみます。 WebClientは、HttpWebRequestよりもはるかに単純なインターフェイスを持ち、ストリームの読み書きを処理します。

string result = WebClient.DownloadString("http://google.com"); 
Console.WriteLine(result); 
関連する問題