Клиенты-сервер чат - 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();
            }
        }
}

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


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

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

15   голосов , оценка 3.933 из 5
Похожие ответы