Hallo,
ich hab auf Basis des TCP-Listener mal begonnen einen Webserver zu coden. Funktioniert auch, außer das er jede 2. Abfrage mit der gleichen Adresse nicht öffnet, als Fehler erhalte ich eine endlos lange Meldung
Zitat: | | ---------------------------
WebServer
---------------------------
bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
bei System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
bei System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
bei WebServer.WebServer.HTTPSession.sendHTMLResponse(String httpRequest) in D:\WebServer\WebServer\WebServer.vb:Zeile 136.
---------------------------
OK
---------------------------
| |
in Zeile 136 steht:
Dim fileStream As New FileStream(httpRequest, FileMode.Open, FileAccess.Read, _
FileShare.Read) Womit kann das zusammenhängen?
Hier mal die gesamte Funktion:
' Send HTTP Response
Private Sub sendHTMLResponse(ByVal httpRequest As String)
Try
' Get the file content of HTTP Request
Dim fileStream As New FileStream(httpRequest, FileMode.Open, _
FileAccess.Read, FileShare.Read)
Dim streamReader As StreamReader = New StreamReader(fileStream, _
System.Text.Encoding.GetEncoding("iso-8859-1"), False)
Dim strBuff As String = streamReader.ReadToEnd
streamReader.Close()
streamReader.Dispose()
streamReader = Nothing
'fileStream.Flush()
fileStream.Close()
fileStream.Dispose()
fileStream = Nothing
' The content Length of HTTP Request
Dim respByte() As Byte = Encoding.GetEncoding( _
"iso-8859-1").GetBytes(strBuff)
' Set HTML Header
Dim htmlHeader As String = _
"HTTP/1.0 200 OK" & ControlChars.CrLf & _
"Server: WebServer 1.0" & ControlChars.CrLf & _
"Content-Length: " & respByte.Length & ControlChars.CrLf & _
"Content-Type: " & getContentType(httpRequest) & _
ControlChars.CrLf & ControlChars.CrLf
' The content Length of HTML Header
Dim headerByte() As Byte = Encoding.GetEncoding( _
"iso-8859-1").GetBytes(htmlHeader)
Console.WriteLine("HTML Header: " & ControlChars.CrLf & _
htmlHeader)
' Send HTML Header back to Web Browser
clientSocket.Send(headerByte, 0, headerByte.Length, _
SocketFlags.None)
' Send HTML Content back to Web Browser
clientSocket.Send(respByte, 0, respByte.Length, _
SocketFlags.None)
' Close HTTP Socket connection
Thread.Sleep(100)
clientSocket.Shutdown(SocketShutdown.Both)
clientSocket.Close()
Catch ex As Exception
Console.WriteLine(ex.StackTrace.ToString())
MsgBox(ex.StackTrace.ToString())
If clientSocket.Connected Then
clientSocket.Close()
End If
End Try
End Sub Für Hilfe wäre ich sehr dankbar. |