Протокол взаємодії додатків клієнта та сервера

Протокол взаємодії сервера з клієнтом базується на основі отримання запитів від клієнта, їх обробці та відсилання відповідей на них.

Якщо сервер отримує повідомлення про те, що з’явився новий клієнт (Command.Login), то записуємо його у список користувачів онлайн (clientList.Add(clientInfo)) і відсилаємо всім користувачам (msgToSend.strMessage = "<- (" + msgReceived.strName + ") is ONLINE").

Якщо клієнт відключається, сервер отримує про це повідомлення (Command.Logout), видаляє користувача зі списку тих, хто онлайн (clientList.RemoveAt(nIndex)), і відсилає повідомлення усім користувачам (msgToSend.strMessage = "-> (" + msgReceived.strName + ") is OFFLINE").

Новому клієнту сервер відсилає список всіх користувачів онлайн (msgToSend.strMessage += client.strName + "*").

Сервер починає прослуховування до отримання нових повідомлень (clientSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, newAsyncCallback(OnReceive), clientSocket)).

Якщо на сервер приходить текстове повідомлення від клієнта (msgToSend.cmdCommand == Command.Message), пересилаємо його необхідному клієнтові (clientInfo.socket.BeginSend(message, 0, message.Length, SocketFlags.None,newAsyncCallback(OnSend), clientInfo.socket)).