Laden...

Kein Nachrichtenempfang aufgrund von Warten auf Clients

Erstellt von darklight vor 11 Jahren Letzter Beitrag vor 11 Jahren 918 Views
D
darklight Themenstarter:in
15 Beiträge seit 2012
vor 11 Jahren
Kein Nachrichtenempfang aufgrund von Warten auf Clients

Guten Abend,

ich hoffe ihr könnt mir helfen. Ich möchte ein System schreiben welches über TCP-Verbindungen Nachrichten versenden kann. Ich habe dafür einen Server über den die Nachrichten dann an die Clients verschickt werden sollen. Das Problem momentan ist aber das an den Server keine Nachrichten verschickt werden. Ich denke das Problem liegt daran, das der Server, sobald er bemerkt das sich ein Client verbinden will, diese Verbindung akzeptiert und dann sofort wieder auf eine neue Verbindung wartet. Ich muss aber dazu sagen, dass das Warten auf Nachrichten des Clients auf einem anderen Thread ausgeführt wird.

Ich hoffe ihr könnt mir bei meinem Problem helfen. Ich würde mich über eure Hilfe freuen. Danke schon mal im voraus.

Code:


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

namespace Messages_Server
{
    class Client
    {
        public string name;
        public TcpClient client;
        public BinaryReader reader;
        public BinaryWriter writer;
    }

    class Program
    {
        static Client[] person = new Client[5];
        static int index = 0;
        
        static void Main(string[] args)
        {
            
            TcpListener listener = new TcpListener(IPAddress.Parse("127.0.0.1"), 8000);
            listener.Start();
            while (true)
            {
                Console.WriteLine("Warte auf eingehende Verbindungen ...");
                try
                {
                    person[index] = new Client();
                    person[index].client = listener.AcceptTcpClient();
                    Console.WriteLine("Eingehende Verbindung ...");
                    NetworkStream stream = person[index].client.GetStream();
                    person[index].reader = new BinaryReader(stream);
                    person[index].writer = new BinaryWriter(stream);
                    person[index].name = person[index].reader.ReadString();
                    Console.WriteLine("Verbindung erfolgreich.");
                    if (index == 0)
                    {
                        Thread clientMessages = new Thread(getClientMessages);
                    }
                    index++;
                }
                catch (Exception err)
                {
                    Console.WriteLine(err.ToString());
                }
            }
        }

        static void getClientMessages()
        {
            while (true)
            {
                Console.WriteLine(person[0].reader.ReadString());
            }
        }
    }
}

Mit freundlichen Grüßen
Darklight

D
216 Beiträge seit 2009
vor 11 Jahren

Das erste was mir auffällt ist, dass du deinen clientMessages-Thread nicht startest.

Darth Maim

D
darklight Themenstarter:in
15 Beiträge seit 2012
vor 11 Jahren

Wie konnte ich nur so doof sein und diesen Fehler nicht entdecken 8o
Nun funktioniert alles problemlos.

Ich danke dir Darth Maim.

D
216 Beiträge seit 2009
vor 11 Jahren

Normalerweise sind mir Rechtschreibfehler/Tippfehler relativ egal, aber Darth Mami ist nun schon ein bisschen, ähhm, falsch 😄

D
darklight Themenstarter:in
15 Beiträge seit 2012
vor 11 Jahren

Merkwürdig, denn ich habe den Namen eigentlich kopiert und eingefügt 😄
Schuld daran war die Autokorrektur 😃
Tut mir leid.

Grüße
Darklight