Laden...

Problem mit TcpListener

Erstellt von Feuerfalke vor 18 Jahren Letzter Beitrag vor 18 Jahren 1.902 Views
Feuerfalke Themenstarter:in
130 Beiträge seit 2005
vor 18 Jahren
Problem mit TcpListener

Hallo, ich hab mir ein kleines Programm gebastelt von dem ich mir erhofft hatte dass es mir wenn ich mit nem Browser auf den Port zugreife sehe, was der Browser sendet. Leider gibt er mit nur die Zahl 71 aus. Hier mal der Code:



using System;
using System.IO;
using System.Net.Sockets;

namespace Tcp_Listener
{
	class Class1
	{
		[STAThread]
		static void Main(string[] args)
		{
			TcpListener listener = new TcpListener(8080);
			Console.WriteLine("Listener initialisiert");
			listener.Start();
			Console.WriteLine("Listener gestartet");
			Console.WriteLine("Warte auf Verbindung");
			TcpClient c = listener.AcceptTcpClient();
			Stream inOut = c.GetStream();
			Console.WriteLine("Stream zum lesen und schreiben erstellt");
	
			StreamReader sr = new StreamReader(c.GetStream());
			Console.Write(sr.Read());
			sr.Close();
			c.Close();
			listener.Stop();
			Console.ReadLine();
		}
	}
}


Feuerfalke Themenstarter:in
130 Beiträge seit 2005
vor 18 Jahren

Hat sich grad so weit erledigt. Ein ReadToEnd() war die Lösung. Allerdings zeigt er mit erst das Ergebnis an wenn ich meinen Browser abbrechen lasse.

C
193 Beiträge seit 2005
vor 18 Jahren

Dann pack halt ReadLine() in ne while schleife.


While(StreamReader.Peek() != -1)
{
bla.ReadLine();
}
 

sowas in der art

Feuerfalke Themenstarter:in
130 Beiträge seit 2005
vor 18 Jahren

Sorry, aber ich versteh irgendwie nicht was das

While(StreamReader.Peek() != -1)
{
bla.ReadLine();
}

da bezwecken soll.

F
529 Beiträge seit 2003
vor 18 Jahren

Es wird nur so lange bis zum nächsten Zeilenumbruch gelesen, bis ein Byte den Wert 0x00 hat.

Wobei das nicht unbedingt so klappen kann. Besser währe:


StringBuilder bd = new StringBuilder();
char[] buffer = new char[1024];
while(sr.Peek() != -1)
{
    sr.Read(buffer, 0, buffer.Lenght);
    bd.Append(buffer);
}

Console.WriteLine(bd.ToString());

Das tuts nämlich auch ohne ein Zeilenumbruch!
(Falls es überhaupt funktioniert, ich habe es nicht getestet)

Besuchen sie das VisualC++ - Forum

Feuerfalke Themenstarter:in
130 Beiträge seit 2005
vor 18 Jahren

Danke, ich werd's mal ausprobieren, wenn ich daheim bin.

Feuerfalke Themenstarter:in
130 Beiträge seit 2005
vor 18 Jahren

Danke, so funktioniert's perfekt.