Клиенты-сервер чат - C#
Формулировка задачи:
Есть несколько компьютеров в одной локальной сети, необходимо на одном из них запустить программу - сервер, на остальных клиентов. Когда на клиентах будет происходить событие (допустим, просто нажатие кнопки на форме) серверу отправляется имя компьютера клиента и время нажатия. На сервере после принятия каждое сообщение пишется в БД mysql. Как это реализовать максимально просто и как реализовать запись в БД по очереди, чтоб не висло приложение, так как сообщение может придти разом от нескольких клиентов?
Решение задачи: «Клиенты-сервер чат»
textual
Листинг программы
- class Program
- {
- static int port = 8005; // порт для приема входящих запросов
- static void Main(string[] args)
- {
- // получаем адреса для запуска сокета
- IPEndPoint ipPoint = new IPEndPoint(IPAddress.Parse("ip"), port);
- // создаем сокет
- Socket listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- try
- {
- // связываем сокет с локальной точкой, по которой будем принимать данные
- listenSocket.Bind(ipPoint);
- // начинаем прослушивание
- listenSocket.Listen(10);
- Console.WriteLine("Сервер запущен. Ожидание подключений...");
- while (true)
- {
- Socket handler = listenSocket.Accept();
- // получаем сообщение
- StringBuilder builder = new StringBuilder();
- int bytes = 0; // количество полученных байтов
- byte[] data = new byte[256]; // буфер для получаемых данных
- do
- {
- bytes = handler.Receive(data);
- builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
- }
- while (handler.Available > 0);
- // запись в базу builder.ToString()
- Console.WriteLine(DateTime.Now.ToShortTimeString() + ": " + builder.ToString());
- string message = "ваше сообщение доставлено";
- data = Encoding.Unicode.GetBytes(message);
- handler.Send(data);
- // закрываем сокет
- handler.Shutdown(SocketShutdown.Both);
- handler.Close();
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- Console.ReadKey();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д