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); }
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 } } }