slangsta
Goto Top

C-Sharp Client-Client Chat

Hallo,

ich habe ein Problem mit meinem kleinen Chat und zwar kann ich einmal eine Nachricht versenden, die dann auch ankommt.
Jedoch kann ich keine weitere mehr versenden.

Hier der Programmcode(C-Sharp):

        TcpClient client;
        TcpListener list;
        Thread listen;
        IPAddress server = IPAddress.Parse("127.0.0.1");  
        int port = 2222;
        string msg = "";  
        string write = "";  
        void send()
        {
                msg = "";  
                write = "";  
                StreamWriter writer = new StreamWriter(client.GetStream());
                write = textBox1.Text;
                writer.Write(write);
                writer.Flush();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
                list = new TcpListener(server, port);
                listen = new Thread(new ThreadStart(this.timer1_Tick));
                list.Start();
                listen.Start();
                client = new TcpClient("127.0.0.1", port);  
        }
        private void timer1_Tick()
        {
                if (list.Pending() == true)
                {
                    msg = "";  
                    TcpClient cl = new TcpClient();
                    cl = list.AcceptTcpClient();
                    StreamReader reader = new StreamReader(cl.GetStream());
                    while (reader.Peek() > -1)
                    {
                        msg += Convert.ToChar(reader.Read()).ToString();
                    }
                    MessageBox.Show(msg);
                }else{}
        }
        private void button1_Click(object sender, EventArgs e)
        {
                send();
        }

Könnt ihr mir da eventuell weiterhelfen?
Danke schonmal.

Grüße,
slangsta

Content-ID: 179968

Url: https://administrator.de/contentid/179968

Ausgedruckt am: 26.11.2024 um 00:11 Uhr

dog
dog 02.02.2012 um 22:13:44 Uhr
Goto Top
a) Weil du nur exakt einmal (während dem Verbindungsaufbau) eine Nachricht akzeptierst
b) Weil dein Server nur maximal eine neue Verbindung annimmt, bevor er sich beendet.
slangsta
slangsta 02.02.2012 um 22:47:19 Uhr
Goto Top
Super!
Danke für die schnelle Hilfe.

Habe folgendes geändert:
        TcpClient client;
        TcpListener list;
        Thread listen;
        IPAddress server = IPAddress.Parse("127.0.0.1");  
        int port = 2222;
        string msg = "";  
        string write = "";  
        bool connected = false;
        void send()
        {
                client = new TcpClient("127.0.0.1", port);  
                msg = "";  
                write = "";  
                StreamWriter writer = new StreamWriter(client.GetStream());
                write = textBox1.Text;
                writer.Write(write);
                writer.Flush();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
                list = new TcpListener(server, port);
                listen = new Thread(new ThreadStart(this.timer1_Tick));
                list.Start();
                listen.Start();
                connected = true;
        }
        private void timer1_Tick()
        {
            while (connected == true)
            {
                if (list.Pending() == true)
                {
                    msg = "";  
                    TcpClient cl = new TcpClient();
                    cl = list.AcceptTcpClient();
                    StreamReader reader = new StreamReader(cl.GetStream());
                    while (reader.Peek() > -1)
                    {
                        msg += Convert.ToChar(reader.Read()).ToString();
                    }
                    MessageBox.Show(msg);
                }
                else { }
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
                send();
        }

Grüße,
slangsta