Option Strict On
Imports System.Net.Sockets
Imports System.Net
Public Class WebFilter
Public listenThread As System.Threading.Thread
Public listenSocket As System.Net.Sockets.Socket
Public Const PORT_NUMBER As Integer = 80
Public Const BACKLOG As Integer = 10
Public Sub webFilter_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
listenSocket = New System.Net.Sockets.Socket(Net.Sockets.AddressFamily.InterNetwork, Net.Sockets.SocketType.Stream, Net.Sockets.ProtocolType.Tcp)
listenSocket.Bind(New System.Net.IPEndPoint(System.Net.IPAddress.Parse("127.0.0.1"), PORT_NUMBER))
listenSocket.Listen(BACKLOG)
listenThread = New System.Threading.Thread(AddressOf doListen)
listenThread.IsBackground = True
listenThread.Start()
End Sub
Public Sub doListen()
Dim client As System.Net.Sockets.Socket
Dim clientThread As System.Threading.Thread
Do
client = listenSocket.Accept()
clientThread = New System.Threading.Thread(AddressOf RespondToHost)
clientThread.IsBackground = True
clientThread.Start(client)
Loop
End Sub
Private Sub RespondToHost(ByVal obj As Object)
Dim resp() As Byte
Dim client As System.Net.Sockets.Socket = DirectCast(obj, System.Net.Sockets.Socket)
Dim rbuff(client.Available - 1) As Byte
client.Receive(rbuff, rbuff.Length, SocketFlags.None)
resp = BuildResponse("D:\EI\databound\dt.xDms")
client.Send(resp, resp.Length, Net.Sockets.SocketFlags.None)
client.Close()
End Sub
Public Sub webFilter_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
Me.Visible = False
End Sub
Public Function BuildResponse(ByVal file As String) As Byte()
Dim response As New System.Text.StringBuilder
Dim sReader As System.IO.StreamReader
Dim fileContents As String
If System.IO.File.Exists(file) Then
sReader = New System.IO.StreamReader(file)
fileContents = sReader.ReadToEnd()
response.AppendLine("HTTP/1.1 200 OK")
response.AppendLine("Content-type: text/html")
response.AppendLine(fileContents.Length.ToString())
response.Append(Environment.NewLine)
response.Append(fileContents)
sReader.Close()
Else
response.AppendLine("HTTP/1.1 404 OK")
response.Append(Environment.NewLine)
End If
Return System.Text.Encoding.UTF8.GetBytes(response.ToString())
End Function