Клиенты-сервер чат - 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(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д