コード例 #1
0
ファイル: SocketHelper.cs プロジェクト: SeppPenner/ChatNew
        private void action_change_room()
        {
            var oldroom = Room;

            _chatserver.RemoveRoomUser(_chatserver.RoomUsers[oldroom - 1], Nickname);
            Room = 0;
            while (Room == 0)
            {
                _chatserver.Write(_client.GetStream(),
                                  ChatProtocolValues.CHOOSE_ROOM(Nickname, _chatserver.NumRoom));
                var temp = _chatserver.Read(_client.GetStream());
                try
                {
                    var rN = int.Parse(temp);
                    if (rN >= 1 && rN <= _chatserver.NumRoom)
                    {
                        Room = rN;
                    }
                }
                catch
                {
                    // ignored
                }
            }
            _chatserver.AddRoomUser(_chatserver.RoomUsers[Room - 1], Nickname);
            _chatserver.Broadcast(ChatProtocolValues.MOVE_TO(Nickname, Room), oldroom);
            _chatserver.Broadcast(ChatProtocolValues.Welcome(Nickname, Room), Room);
        }
コード例 #2
0
ファイル: SocketHelper.cs プロジェクト: SeppPenner/ChatNew
 private void HandleClient()
 {
     try
     {
         var auth = new AuthenticationServer(_chatserver, _client);
         if (!auth.Authenticate())
         {
             throw new Exception();
         }
         _chatserver.Write(_client.GetStream(),
                           ChatProtocolValues.CONNECTION_MSG(auth.UserId));
         Nickname = auth.UserId;
         Room     = _chatserver.AssignRoom(Nickname);
         Console.WriteLine(Resources.RoomAssigned + Room + Resources.For + Nickname);
         try
         {
             _chatserver.AddConnection(Nickname, _client);
         }
         catch
         {
             // ignored
         }
         _chatserver.Broadcast(ChatProtocolValues.Welcome(Nickname, Room), Room);
         while ((_readdata = _chatserver.Read(_client.GetStream())) != "")
         {
             _readdata = _readdata.Trim();
             Console.WriteLine(Resources.Read + _readdata);
             if (_readdata.ToUpper().Substring(0, 1) == ChatProtocolValues.IsCmd)
             {
                 _action = action_default;
                 if (
                     (_readdata.ToUpper() + ":").IndexOf(ChatProtocolValues.GetPicCmd, StringComparison.Ordinal) ==
                     0)
                 {
                     _action = action_get_pic;
                 }
                 if (
                     (_readdata.ToUpper() + ":").IndexOf(ChatProtocolValues.SendPicCmd, StringComparison.Ordinal) ==
                     0)
                 {
                     _action = action_send_pic;
                 }
                 if (
                     (_readdata.ToUpper() + ":").IndexOf(ChatProtocolValues.GetMediaCmd, StringComparison.Ordinal) ==
                     0)
                 {
                     _action = action_get_media;
                 }
                 if (
                     (_readdata.ToUpper() + ":").IndexOf(ChatProtocolValues.SendMediaCmd,
                                                         StringComparison.Ordinal) ==
                     0)
                 {
                     _action = action_send_media;
                 }
                 if ((_readdata.ToUpper() + " ").IndexOf(ChatProtocolValues.HelpCmd, StringComparison.Ordinal) ==
                     0)
                 {
                     _action = action_help;
                 }
                 if ((_readdata.ToUpper() + " ").IndexOf(ChatProtocolValues.QuitCmd, StringComparison.Ordinal) ==
                     0)
                 {
                     _action = action_quit;
                 }
                 if (
                     (_readdata.ToUpper() + " ").IndexOf(ChatProtocolValues.ChangeRoomCmd,
                                                         StringComparison.Ordinal) == 0)
                 {
                     _action = action_change_room;
                 }
                 if (
                     (_readdata.ToUpper() + " ").IndexOf(ChatProtocolValues.WhichRoomCmd,
                                                         StringComparison.Ordinal) ==
                     0)
                 {
                     _action = action_which_room;
                 }
                 if ((_readdata.ToUpper() + " ").IndexOf(ChatProtocolValues.ListCmd, StringComparison.Ordinal) ==
                     0)
                 {
                     _action = action_list;
                 }
                 if (
                     (_readdata.ToUpper() + ":").IndexOf(ChatProtocolValues.PrivateMsgCmd,
                                                         StringComparison.Ordinal) == 0)
                 {
                     _action = action_private_message;
                 }
             }
             else
             {
                 _action = action_send_message;
             }
             _action();
         }
     }
     catch (Exception e)
     {
         Console.WriteLine(Resources.ErrorFromServer);
         Console.WriteLine(Resources.Stars);
         Console.WriteLine(e);
         Console.WriteLine(Resources.Stars);
         Console.WriteLine(Resources.WaitingForConnection);
     }
     finally
     {
         try
         {
             _chatserver.Write(_client.GetStream(), ChatProtocolValues.QuitMsg);
         }
         catch
         {
             // ignored
         }
         if (Room != 0 && Nickname != "")
         {
             _chatserver.RemoveRoomUser(_chatserver.RoomUsers[Room - 1], Nickname);
             _chatserver.Broadcast(ChatProtocolValues.USER_LOG_OUT(Nickname, Room));
         }
         try
         {
             _chatserver.RemoveConnection(Nickname, _client);
         }
         catch
         {
             // ignored
         }
     }
 }