Ich verzweifle grad an einem eigentlich einfachen System ... Im Netz kann ich partou keine Lösung für genau das finden, was ich lösen will.
Imports System.Net
Imports System.Net.Sockets
Imports System.Collections.Specialized
Imports System.IO
Imports System.Threading
Imports System.Windows.Forms
Module Program
Public tcpClient As New System.Net.Sockets.TcpClient()
Sub Main()
Dim rThread As New Thread(AddressOf StartListening)
rThread.IsBackground = True
rThread.Start()
Console.ReadLine()
End Sub
Sub StartListening()
Dim myTcpListener As TcpListener
Try
myTcpListener = New TcpListener(5155)
Catch exp As Exception
Console.WriteLine("Error:")
Console.WriteLine(exp.Message & ":" & exp.StackTrace)
Exit Sub
End Try
myTcpListener.Start()
While (True)
Try
Dim networkStream As NetworkStream
Dim tcpClient As TcpClient
If myTcpListener.Pending Then
tcpClient = myTcpListener.AcceptTcpClient()
networkStream = tcpClient.GetStream()
If networkStream.CanRead Then
Dim buffer(tcpClient.ReceiveBufferSize) As Byte
networkStream.Read(buffer, 0, CInt(tcpClient.ReceiveBufferSize))
Dim result As String = System.Text.Encoding.UTF8.GetString(buffer).Trim()
Console.WriteLine(DateTime.Now.ToLongTimeString())
Console.WriteLine(result)
End If
If networkStream.CanWrite Then
Answer(networkStream, String.Format("HTTP/1.0 {0} {1}\r\n", "200", _
"Ready"))
Answer(networkStream, String.Format("Content-Type: {0}\r\n", _
"image/jpeg"))
Answer(networkStream, "\r\n\r\n")
networkStream.Flush()
Dim picBuffer() As Byte = System.IO.File.ReadAllBytes( _
"C:\Wallpaper\wald.jpg")
networkStream.Write(picBuffer, 0, picBuffer.Length)
End If
networkStream.Close()
tcpClient.Close()
End If
Catch exp As Exception
Console.WriteLine("Error:")
Console.WriteLine(exp.ToString())
End Try
End While
myTcpListener.Stop()
End Sub
Sub Answer (ByRef strm As NetworkStream, ByVal strng As String)
Console.WriteLine("Gesendet:")
Console.WriteLine(" --- ")
Console.WriteLine(strng)
Console.WriteLine(" --- ")
Dim data() As Byte = System.Text.Encoding.UTF8.GetBytes(strng)
strm.Write(data, 0, data.Length)
End Sub
End Module Es ist ein #Dev4.4-Konsolenanwendungs-Projekt auf vb.net-basis.
Es dürfte aber klar sein, was ich versuche. Dennoch krieg ich ständig beim Aufruf von localhost:5155 application/octet-stream als datentyp ... -.- ich will nur, dass das bild angezeigt wird ... (oder entsprechend halt die daten, die ich anzeigen will)
Kann mir da wer nen Tipp geben, wie ich das mit den Header-Daten korrekt umgesetzt krieg? |