示例#1
0
文件: Client.cs 项目: Kupilif/ChatBox
        /*  Подпрограмма работы с подключённым клиентом  */
        private void WorkWithClient()
        {
            MessageType messgType;

            try
            {
                /*  В бесконечном цикле пытаемся получить сообщение от клиента.
                 *  Выход из цикла осуществляется при возникновении исключения  */
                while (true)
                {
                    /*  Проверяем, есть ли непрочитанные данные  */
                    if (NetStream.DataAvailable)
                    {
                        /*  Считываем код сообщения, который определяет,
                         *  это текстовое сообщение либо ошибка  */
                        messgType = (MessageType)Reader.ReadByte();
                        AnalyseMessageType(messgType);
                    }
                }
            }
            catch (ConnectionException clExc)
            {
                /*  Обработка возникшего исключения  */
                WorkWithExc(clExc);
            }
            catch (Exception)
            {
            }
            finally
            {
                CloseConnection();
                UI.UpdateServerInfo();
            }
        }
示例#2
0
        /*  Подпрограмма прослушивания входящих подключений  */
        private void ListenIncomingConnections()
        {
            try
            {
                listenSocket.Bind(listenPoint);
                listenSocket.Listen(10);
                UI.ShowText(MESSG_WAITING_FOR_CLIENTS, idManager.ID_SERVER_DEFAULT);
                IsServerWork = true;
                UI.UpdateServerInfo();
            }
            catch (Exception ex)
            {
                UI.ShowText(ex.Message, idManager.ID_SERVER_ERROR);
            }

            if (IsServerWork)
            {
                try
                {
                    while (true)
                    {
                        Socket handler = listenSocket.Accept();
                        try
                        {
                            TryToConnectNewClient(handler);
                        }
                        catch (Exception) { }
                    }
                }
                catch (Exception)
                {
                }
                finally
                {
                    RemoveAllConnections(NEED_MESSAGE);
                    UI.ShowText(MESSG_SERVER_STOPPED, idManager.ID_SERVER_DEFAULT);
                    IsServerWork = false;
                }
            }
        }