Laden...

TCP Client empfängt Daten nicht

Erstellt von hoxplus vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.371 Views
H
hoxplus Themenstarter:in
2 Beiträge seit 2015
vor 9 Jahren
TCP Client empfängt Daten nicht

Hi Leute,

ich experimentiere gerade etwas mit TCP Sockets und habe Eine Server- und eine Clientanwendung geschrieben. Der Server sendet eine Nachricht
und der Client soll diese empfangen, was allerdings nicht funktioniert. Ich weiß nicht ob dsa Problem auf Server oder auf Clientseite liegt.
Ich poste einfach mal den Code, da dieser wirklich nicht lang ist. Ich hoffe ihr könnt mir helfen.
Danke schonmal im Vorraus

Server:

Console.WriteLine("Starting Server...");
Socket listener = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ip = new IPEndPoint(IPAddress.IPv6Any, 4242);
listener.Bind(ip);
listener.Listen(20);
Console.WriteLine("Now listening...");
while (true)
            {
                Socket user = listener.Accept();
                Console.WriteLine("user connected");

                using(NetworkStream str = new NetworkStream(user, false))
                using(StreamWriter writer = new StreamWriter(str))
                {
                    writer.WriteLine("Hi");
                }
                Console.WriteLine("Message sent");
            }

/// Ausgabe:
/// Starting Server...
/// Now listening...
/// user connected
/// MEssage sent

Client

IPHostEntry hostDnsEntry = Dns.GetHostEntry("localhost");
IPAddress serverIp = hostDnsEntry.AddressList[0];
Socket serverSocket = new Socket(serverIp.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
serverSocket.Connect(serverIp, 4242);

Console.WriteLine("Connected");
string Data;

using (Stream tststream = new NetworkStream(serverSocket, false))
using (StreamReader reader = new StreamReader(tststream))
{
       Data = reader.ReadToEnd();
}
Console.WriteLine(Data);

/// Ausgabe:
/// Connected

Wenn ich mit dem Client zu Server "time-nw.nist.gov" Auf Port 13 verbinde funktioniert es

16.835 Beiträge seit 2008
vor 9 Jahren

Ist Dir [Tutorial] Client-/Server-Komponente über TCP-Sockets bei Deiner intensiven Recherche bereits aufgefallen? 😉

H
hoxplus Themenstarter:in
2 Beiträge seit 2015
vor 9 Jahren

Hi,

ich wollte eigentlich das Problem mit den Streams lösen, habe mich jetzt dann aber doch für send und receive entschieden, was wunderbar klappt.
Trotzdem danke für die Antwort.

W
872 Beiträge seit 2005
vor 9 Jahren

Wenn Du StreamWriter benutzt, dann solltest Du auf jeden Fall Flush nicht vergessen.
TCP/IP ist kein Fire und Forget, sondern ein "höfliches" Protokoll. Höflich bedeutet zu warten, bis der andere bestätigt hat, das die Nachricht angekommen ist und nicht ungefragt zu verschwinden. In Deinem Fall könnte es auch passieren, daß beim Client der Shutdown des Servers vor der Nachricht verarbeitet wird.