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-Key: 179968

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

Printed on: April 19, 2024 at 22:04 o'clock

Member: dog
dog Feb 02, 2012 at 21:13:44 (UTC)
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.
Member: slangsta
slangsta Feb 02, 2012 at 21:47:19 (UTC)
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