Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 24.02.2021, 01:20   #1
Rudman132
 
Регистрация: 12.07.2019
Сообщений: 4
Сообщение TcpChat (Сonsole)

Нужно сделать tcp чат, есть сервер и несколько клиентов, сообщения отправляются на сервер и потом к клиенту. Проблема такая: сейчас все сообщение клиентов отправляются на сервер (смт. фото), как сделать отправку сообщений с сервера клиенту?
Server:
Код:
class Client 
    {
       public TcpClient tcpClient;
 
        public void loadClient()
        {
            StreamReader reader = new StreamReader(tcpClient.GetStream());
            NetworkStream networkStream = tcpClient.GetStream();
 
            string massage = reader.ReadLine();
            string userName = massage;
 
            Console.WriteLine("Welcome " + userName);
 
            while (true)
            {
                try
                {
                    massage = reader.ReadLine();
                    Console.WriteLine(userName + ": " + massage);
                    massage += "\n";
 
                    byte[] data = Encoding.UTF8.GetBytes(massage);
                    networkStream.Write(data, 0, data.Length);
                }
                catch 
                {
                    break;
                }
            }
 
            tcpClient.Close();
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            IPAddress iPAddress = IPAddress.Parse("127.0.0.1");
            TcpListener clientListener = new TcpListener(iPAddress, 34561);
 
            try
            {
                clientListener.Start();
                Console.WriteLine("Connect...");
 
                while (true)
                {
 
                    TcpClient tcpClient = clientListener.AcceptTcpClient();
                    Client client = new Client();
                    client.tcpClient = tcpClient;
 
                    Thread thread = new Thread(new ThreadStart(client.loadClient));
                    thread.Start();
                }
 
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                clientListener.Stop();
            }
 
            Console.ReadKey();
        }
    }
Client:
Код:
class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter name: ");
            string name = Console.ReadLine();
 
            try
            {
                TcpClient tcpClient = new TcpClient("127.0.0.1", 34561);
 
                StreamReader reader = new StreamReader(tcpClient.GetStream());
                NetworkStream stream = tcpClient.GetStream();
                string dataToSend = name + "\n";
 
                byte[] data = Encoding.UTF8.GetBytes(dataToSend);
                stream.Write(data, 0, data.Length);
 
                while (true)
                {
                    Console.Write(name + ": ");
                    dataToSend = Console.ReadLine() + "\n";
 
                    data = Encoding.UTF8.GetBytes(dataToSend);
                    stream.Write(data, 0, data.Length);
 
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
 
            Console.Read();
        }
    }
Изображения
Тип файла: jpg Screenshot_1.jpg (54.2 Кб, 0 просмотров)
Rudman132 вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме 20000 рублей в месяц

Опции темы



Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS