Клиенты-сервер чат - C#

Узнай цену своей работы

Формулировка задачи:

Есть несколько компьютеров в одной локальной сети, необходимо на одном из них запустить программу - сервер, на остальных клиентов. Когда на клиентах будет происходить событие (допустим, просто нажатие кнопки на форме) серверу отправляется имя компьютера клиента и время нажатия. На сервере после принятия каждое сообщение пишется в БД mysql. Как это реализовать максимально просто и как реализовать запись в БД по очереди, чтоб не висло приложение, так как сообщение может придти разом от нескольких клиентов?

Решение задачи: «Клиенты-сервер чат»

textual
Листинг программы
  1. class Program
  2.     {
  3.         static int port = 8005; // порт для приема входящих запросов
  4.     static void Main(string[] args)
  5.     {
  6.         // получаем адреса для запуска сокета
  7.         IPEndPoint ipPoint = new IPEndPoint(IPAddress.Parse("ip"), port);
  8.  
  9.         // создаем сокет
  10.         Socket listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  11.             try
  12.             {
  13.             // связываем сокет с локальной точкой, по которой будем принимать данные
  14.             listenSocket.Bind(ipPoint);
  15.  
  16.             // начинаем прослушивание
  17.             listenSocket.Listen(10);
  18.  
  19.             Console.WriteLine("Сервер запущен. Ожидание подключений...");
  20.  
  21.             while (true)
  22.             {
  23.                 Socket handler = listenSocket.Accept();
  24.                 // получаем сообщение
  25.                 StringBuilder builder = new StringBuilder();
  26.                 int bytes = 0; // количество полученных байтов
  27.                 byte[] data = new byte[256]; // буфер для получаемых данных
  28.  
  29.                 do
  30.                 {
  31.                     bytes = handler.Receive(data);
  32.                     builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
  33.                 }
  34.                 while (handler.Available > 0);
  35.  
  36.                 // запись в базу builder.ToString()
  37.                 Console.WriteLine(DateTime.Now.ToShortTimeString() + ": " + builder.ToString());
  38.  
  39.                  string message = "ваше сообщение доставлено";
  40.                  data = Encoding.Unicode.GetBytes(message);
  41.                  handler.Send(data);
  42.  
  43.  
  44.                     // закрываем сокет
  45.                 handler.Shutdown(SocketShutdown.Both);
  46.                 handler.Close();
  47.             }
  48.             }
  49.             catch (Exception ex)
  50.             {
  51.                 Console.WriteLine(ex.Message);
  52.                 Console.ReadKey();
  53.             }
  54.         }
  55. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы