501
d4shoerncheN
goscho
spytnik
wiesi200
zanko

C-Sharp Client-Client Chat

Mitglied: slangsta
02.02.2012
21:10:52 Uhr
363 Aufrufe
2 Antworten
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):

01.
        TcpClient client; 
02.
        TcpListener list; 
03.
        Thread listen; 
04.
        IPAddress server = IPAddress.Parse("127.0.0.1"); 
05.
        int port = 2222; 
06.
        string msg = ""; 
07.
        string write = ""; 
08.
        void send() 
09.
10.
                msg = ""; 
11.
                write = ""; 
12.
                StreamWriter writer = new StreamWriter(client.GetStream()); 
13.
                write = textBox1.Text; 
14.
                writer.Write(write); 
15.
                writer.Flush(); 
16.
17.
        private void Form1_Load(object sender, EventArgs e) 
18.
19.
                list = new TcpListener(server, port); 
20.
                listen = new Thread(new ThreadStart(this.timer1_Tick)); 
21.
                list.Start(); 
22.
                listen.Start(); 
23.
                client = new TcpClient("127.0.0.1", port); 
24.
25.
        private void timer1_Tick() 
26.
27.
                if (list.Pending() == true) 
28.
29.
                    msg = ""; 
30.
                    TcpClient cl = new TcpClient(); 
31.
                    cl = list.AcceptTcpClient(); 
32.
                    StreamReader reader = new StreamReader(cl.GetStream()); 
33.
                    while (reader.Peek() > -1) 
34.
35.
                        msg += Convert.ToChar(reader.Read()).ToString(); 
36.
37.
                    MessageBox.Show(msg); 
38.
                }else{} 
39.
40.
        private void button1_Click(object sender, EventArgs e) 
41.
42.
                send(); 
43.
        }

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

Grüße,
slangsta

Mitglied: dog
dog schreibt am 02.02.2012 um 22:13:44 Uhr
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.
Mitglied: slangsta
slangsta schreibt am 02.02.2012 um 22:47:19 Uhr
Super!
Danke für die schnelle Hilfe.

Habe folgendes geändert:
01.
        TcpClient client; 
02.
        TcpListener list; 
03.
        Thread listen; 
04.
        IPAddress server = IPAddress.Parse("127.0.0.1"); 
05.
        int port = 2222; 
06.
        string msg = ""; 
07.
        string write = ""; 
08.
        bool connected = false; 
09.
        void send() 
10.
11.
                client = new TcpClient("127.0.0.1", port); 
12.
                msg = ""; 
13.
                write = ""; 
14.
                StreamWriter writer = new StreamWriter(client.GetStream()); 
15.
                write = textBox1.Text; 
16.
                writer.Write(write); 
17.
                writer.Flush(); 
18.
19.
        private void Form1_Load(object sender, EventArgs e) 
20.
21.
                list = new TcpListener(server, port); 
22.
                listen = new Thread(new ThreadStart(this.timer1_Tick)); 
23.
                list.Start(); 
24.
                listen.Start(); 
25.
                connected = true; 
26.
27.
        private void timer1_Tick() 
28.
29.
            while (connected == true) 
30.
31.
                if (list.Pending() == true) 
32.
33.
                    msg = ""; 
34.
                    TcpClient cl = new TcpClient(); 
35.
                    cl = list.AcceptTcpClient(); 
36.
                    StreamReader reader = new StreamReader(cl.GetStream()); 
37.
                    while (reader.Peek() > -1) 
38.
39.
                        msg += Convert.ToChar(reader.Read()).ToString(); 
40.
41.
                    MessageBox.Show(msg); 
42.
43.
                else { } 
44.
45.
46.
        private void button1_Click(object sender, EventArgs e) 
47.
48.
                send(); 
49.
        }

Grüße,
slangsta
mehr ...Ähnliche Beiträge