VB.net получать сообщения - простой HTTP-сервер
Я хочу иметь программу, которая прослушивает сообщения на определенном порту, например, http://xxx.xxx.xxx.xxx:60002/?key=value
куда xxx.xxx.xxx.xxx
работает моя программа и порт, который она слушает 60002
, Затем программа должна будет перейти к параметрам, переданным ей, в этом случае key
а также value
Затем я хочу иметь возможность анализировать значения, которые приходят, хотя. VB - это не тот язык, который я обычно использую.
Я хочу, чтобы решение было совместимо с платформой.NET 3.5.
1 ответ
Решение
Небольшая модификация следующего фрагмента кода (с http://social.msdn.microsoft.com/Forums/vstudio/en-US/b7f476d1-3147-4b18-ba5e-0b3ce8f8a918/want-to-make-a-webserver-with-httplistener) у меня работает
Imports System.Net
Imports System.Globalization
Module HttpListener
Sub Main()
Dim prefixes(0) As String
prefixes(0) = "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 Module