예제 #1
0
 void WHOIAM(User user, string prms)
 {
     user.SendMessage("YOUARE " + user.name);
 }
예제 #2
0
        void ClientThread(Object userObject)
        {
            User user = (User)userObject;

            Log.Write(String.Format("Подключен клиент: {0}",
                                    user.client.Client.RemoteEndPoint.ToString()));
            user.SendMessage("YOUARE " + user.name);
            string date = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString();

            user.SendMessage(String.Format("MSG Тебя приветствует сервер {0}! Время на сервере: {1}",
                                           name, date));
            userList.SendMessageToAll("MSG " + user.name + " присоединился к чату.");
            userList.SendNamesToAll();
            while (!stopped)
            {
                string mess = "";
                try
                {
                    mess = user.GetNextMessage();
                }
                catch (SocketException)
                {
                    if (stopped)
                    {
                        return;
                    }
                    Log.Write(String.Format("Ошибка получения сообщения! "
                                            + "Подключение с {0} будет разорвано!", user.name));
                    userList.Remove(user);
                    userList.SendNamesToAll();
                    return;
                }
                catch (ObjectDisposedException)
                {
                    if (stopped)
                    {
                        return;
                    }
                    Log.Write(String.Format("Ошибка получения сообщения! "
                                            + "Подключение с {0} было разорвано!", user.name));
                    userList.Remove(user);
                    userList.SendNamesToAll();
                    return;
                }
                //Log.Write("получил: "+mess);
                int    splitter = mess.IndexOf(' ');
                string comm, prms;
                if (splitter > 0)
                {
                    comm = mess.Substring(0, splitter);
                    prms = mess.Substring(splitter + 1);
                }
                else
                {
                    comm = mess;
                    prms = "";
                }
                try
                {
                    commandsMap[comm](user, prms);
                }
                catch (KeyNotFoundException)
                {
                    user.SendError("001");
                    Log.Write("Неизвестная команда: " + mess);
                }
                catch (FormatException fe)
                {
                    user.SendError("001");
                    Log.Write("Ожидалось: " + fe.Message + ". Получено: " + mess);
                }
                catch (IOException)
                {
                    Log.Write("Ошибка отправки сообщения. Соединение будет разорвано.");
                    userList.Remove(user);
                    return;
                }
            }
        }