Как сделать так чтобы клиент видел не только свои но и чужие сообщения - C#
Формулировка задачи:
В общем такой вопрос, есть чат состоящий из сервера и клиетнта, каждый клиент работает в своем потоке. Так вот при отправке сообщений, свои сообщения в окне чата клиент видит, а чужие нет. Сервер видит всех, и прекрасно в консоль весь чат выводит. Как сделать так чтобы клиент видел не только свои но и чужие сообщения. Вот код клиента, он неоптимизирован я знаю, только начал делать.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net; using System.IO; using System.Net.Sockets; namespace client2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public int port = 5048; public string adress = "192.168.100.189"; public string name = ""; private void Reg() { TcpClient client = new TcpClient(adress, port); NetworkStream NWS = client.GetStream(); BinaryReader R = new BinaryReader(NWS); BinaryWriter W = new BinaryWriter(NWS); name = textBox1.Text; W.Write(name+" is log in"); listBox1.Items.Add(R.ReadString().ToString().Trim()); } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { Reg(); } private void button2_Click(object sender, EventArgs e) { TcpClient client = new TcpClient(adress, port); NetworkStream NWS = client.GetStream(); BinaryWriter W = new BinaryWriter(NWS); BinaryReader R = new BinaryReader(NWS); W.Write(name+":"+textBox3.Text); listBox1.Items.Add(R.ReadString().ToString().Trim()); } } }
Все еще актуально, если кто знает как еще чат организовать получше(если мой подход не верен в корне), буду благодарен.
Решение задачи: «Как сделать так чтобы клиент видел не только свои но и чужие сообщения»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Sockets; using System.IO; using System.Threading; using System.Net; namespace Server { class Program { public class Connection { public TcpClient cl; public void Work() { NetworkStream NWS = cl.GetStream(); BinaryReader R = new BinaryReader(NWS); BinaryWriter W = new BinaryWriter(NWS); string list = R.ReadString(); if (list != null) { Console.WriteLine(list.ToString()); W.Write(list.ToString()); } } } static void Main(string[] args) { IPAddress ipmain=null; IPAddress[] ip = Dns.GetHostAddresses(Dns.GetHostName()); foreach(IPAddress i in ip) { ipmain = i; } Console.WriteLine("Chat Server, version 1.0.0.0"); TcpListener l = new TcpListener(ipmain,5048); l.Start(); Console.WriteLine("The server is started"); while (true) { TcpClient cl = l.AcceptTcpClient(); Connection c = new Connection(); c.cl = cl; Thread t =new Thread(new ThreadStart(c.Work)); t.IsBackground = false; t.Start(); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д