Esempio n. 1
0
        public override void MouseDown(MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Left)
            {
                return;
            }
            if (!_isReady || _gameBoard.SelectedCell.X == -1 || !_playing)
            {
                return;
            }
            var selectedCell = _gameBoard.Board[_gameBoard.SelectedCell.X][_gameBoard.SelectedCell.Y];

            if (selectedCell.Destroyed)
            {
                _message += Messages.CellAlreadyDestroyed;
                return;
            }
            if (_gameBoard.SelectedCell.X >= GameBoard.BoardSize)
            {
                _messageFlag = true;
                _alpha       = 255;
                _message     = Messages.SelectFromEnemy;
                return;
            }

            var send = new Message
            {
                Code = Codes.CellClicked, Column = _gameBoard.SelectedCell.Y, Row = _gameBoard.SelectedCell.X
            };

            Write(send);
        }
Esempio n. 2
0
 void Start_Click()
 {
     StartButton.Click += (sender, args) =>
     {
         _isReady = _player.IsReady();
         if (!_isReady)
         {
             _alpha       = 255;
             _message     = Messages.NotReady;
             _messageFlag = true;
         }
         else
         {
             StartButton.Enabled = false;
             StartButton.Visible = false;
             ShipWarsForm.Collection.RemoveByKey("RandomButton");
             ShipsToBoard();
             StartButton.Dispose();
             var send = new Message {
                 Code = Codes.PlayerIsReady, Matrix = new bool[GameBoard.BoardSize][]
             };
             for (var i = 0; i < GameBoard.BoardSize; i++)
             {
                 send.Matrix[i] = new bool[GameBoard.BoardSize];
                 for (var j = 0; j < GameBoard.BoardSize; j++)
                 {
                     send.Matrix[i][j] = _gameBoard.Board[i + GameBoard.BoardSize][j].ShipOverMe;
                 }
             }
             Write(send);
         }
     };
 }
 protected virtual void sendNewTopic(EventArgs e, Message.Message msg)
 {
     sendNewTopicDel temp = sendNewTopicEvent; //MulticastDelegate一个委托链表
     //通知所有已订阅事件的对象
     if (temp != null)
         temp(this, e, msg); //通过事件NewMail(一种特殊的委托)逐一回调客户端的方法
 }
        internal static string Pack(Message message)
        {
            string result =
                message.Author + "<author>" + message.CreationTicks
                + "<ticks>" + message.Text+"<text>"+message.Picture;

            return result;
        }
Esempio n. 5
0
        public MessageCollection Send(Message msg)
        {
            Console.WriteLine(msg);

            return new MessageCollection
            {
                msg, 
                msg, 
                msg
            };
        }
Esempio n. 6
0
 private void Write(Message message)
 {
     try
     {
         var data = GetBytes(message);
         _stream.Write(data, 0, data.Length);
     }
     catch (Exception e)
     {
         throw new Exception($"Server or Client are not doing fine\n{e.Message}\n{e.StackTrace}");
     }
 }
Esempio n. 7
0
 public static Message Desserialize(byte[] data)
 {
     Message result = new Message();
     using (MemoryStream m = new MemoryStream(data))
     {
         using (BinaryReader reader = new BinaryReader(m))
         {
             result.Id = reader.ReadInt32();
             result.SourceName = reader.ReadString();
             result.DestinationName = reader.ReadString();
             result.Data = reader.ReadString();
         }
     }
     return result;
 }
        internal static Message Unpack(string line)
        {
            string[] separators =
                new string[3] { "<author>", "<ticks>","<text>" };
            var temp = line.Split
                (separators,System.StringSplitOptions.None);
            var result = new Message();
            result.Author =
                (temp[0]==String.Empty)?"undefined":temp[0];
            result.CreationTicks =
                (temp[1]==String.Empty)?DateTime.Now.Ticks:Convert.ToInt64(temp[1]);
            result.Text = temp[2];
            result.Picture = temp[3];

            return result;
        }
Esempio n. 9
0
        private void UserChangeChannelRequestHandler(NetworkClient client, Message message)
        {
            RemoveUserFromChannel(client.UserSession);

            // todo: validation that the user can join target channel.
            AddUserToChannel(client.UserSession, (int)message.Data);

            BroadcastAll(client, Message.Create(MessageType.UserChangeChannelResponse, client.UserSession), true);
        }
Esempio n. 10
0
 private void RenameChannelRequestHandler(NetworkClient client, Message message)
 {
     var channelFromRequest = message.GetData<Channel>();
     var channelFromServer = channelSessions.FirstOrDefault(c => c.Channel.Id == channelFromRequest.Id);
     if (channelFromServer == null)
     {
         Console.WriteLine("Unable to find channel id {0} in server", channelFromRequest.Id);
         return;
     }
     channelService.UpdateChannel(channelFromRequest); // ensure you can update in database first
     channelFromServer.Channel.Name = channelFromRequest.Name; // then update the channel object currently serving
     BroadcastAll(client, Message.Create(MessageType.RenameChannelResponse, channelFromRequest), true);
 }
Esempio n. 11
0
 private void HelloHandler(NetworkClient client, Message message)
 {
     // TODO: see what we are using this for
 }
 protected virtual void distribute(EventArgs e, Message.Message msg, string room)
 {
     distributeDel temp = distributeEvent; //MulticastDelegate一个委托链表
     //通知所有已订阅事件的对象
     if (temp != null)
         temp(this, e, msg,room); //通过事件NewMail(一种特殊的委托)逐一回调客户端的方法
 }
Esempio n. 13
0
        public static void message(Message mess, Socket handler)
        {
            Console.Write("GOT HERE BITCHES");
            Socket destination;
            if (map.TryGetValue(mess.SourceName, out destination))
            {

            }


        }
        public void handleMsg(Message.Message msg,ChatAplication.user u)
        {
            EventArgs e = new EventArgs();
            Chat.Chat.Chatter chatter;
            string head = msg.head.Split(',')[0];
            try
            {
                switch (head)
                {
                    case "in":
                        chatter = new Chat.Chat.TextChatter(u.loginName);
                        join(chatter);
                        msg.data = u.loginName + " is in";
                        roomUser.Add(u);
                        break;
                    case "talk":
                        string content = msg.data;
                        msg.data = u.loginName + " : " + content;
                        break;
                    case "exit":
                        chatter = new Chat.Chat.TextChatter(u.loginName);
                        this.exit(chatter);
                        msg.data = u.loginName + " is out";
                        break;
                    default:
                        addText(e, "client trigger a undefined event!");
                        break;
                }
            }
            catch
            {

            }
            sendMessage(msg);
        }
Esempio n. 15
0
        private void Broadcast(NetworkClient sourceClient, List<NetworkClient> targetClients, Message message, bool includeSelf = false)
        {
            Parallel.ForEach(targetClients, (Action<NetworkClient>)((c) =>
            {
                try
                {
                    if (!includeSelf && sourceClient == c)
                    {
                        return;
                    }

                    Console.WriteLine("Broadcasting: {0} from user {1} in channel {2}",
                        message.Type,
            (object)sourceClient.UserSession.UserInfo.Username,
                        sourceClient.UserSession.ChannelId);

                    c.WriteMessage(message);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }));
        }
Esempio n. 16
0
 private void CreateChannelRequestHandler(NetworkClient client, Message message)
 {
     var channelToCreate = message.GetData<Channel>();
     var createdChannel = channelService.CreateChannel(channelToCreate.Name);
     var createdChannelSession = new ChannelSession(createdChannel);
     AddChannel(createdChannelSession);
     BroadcastAll(client, Message.Create(MessageType.CreateChannelResponse, createdChannelSession), true);
 }
Esempio n. 17
0
        private void BroadcastChannel(NetworkClient sourceClient, Message message, bool includeSelf = false)
        {
            var channelId = sourceClient.UserSession.ChannelId;
            var channel = channelSessions.FirstOrDefault(c => c.Channel.Id == channelId);
            if (channel == null)
            {
                Console.WriteLine("Unable to find channel id {0} to broadcast", channelId);
                return;
            }

            var targetClients = from client in connectedClients
                                     join user in channel.UserSessions on client.UserSession.ConnectionId equals user.ConnectionId
                                     select client;

            if (targetClients.Any())
            {
                Broadcast(sourceClient, targetClients.ToList(), message, includeSelf);
            }
        }
Esempio n. 18
0
 private void BroadcastAll(NetworkClient sourceClient, Message message, bool includeSelf = false)
 {
     Broadcast(sourceClient, connectedClients, message, includeSelf);
 }
Esempio n. 19
0
 public void Send(Message msg)
 {
     Console.WriteLine("Header: {0}", msg.Header);
     Console.WriteLine("Body: {0}", msg.Body);
 }
Esempio n. 20
0
 /// <summary>
 /// Функция обратного вызова для авторизации.
 /// </summary>
 /// <param name="result"></param>
 private void AuthCallback(IAsyncResult result)
 {
     try
     {
         Client authClient = (Client)result.AsyncState;
         if (authClient != null)
         {
             string role = "";
             if (authClient.AuthCount <= 2)
             {
                 if (authClient.IsActive)
                 {
                     string[] authData = null;
                     string[] mess = null;
                     int count = 0;
                     count = authClient.Socket.EndReceive(result);
                     mess = Encoding.ASCII.GetString(authClient.Buffer, 0, count).Split('?');
                     authData = Crypto.Decrypt(mess[0]).Split('.');
                     role = TableUser.CheckUser(authData[0], authData[1]);
                     if (role != "")
                     {
                         authClient.IsAuth = true;
                         authClient.IsActive = true;
                         authClient.login = authData[0];
                         WinLog.Write("Клиент " + authClient.login + " авторизован",
                                      System.Diagnostics.EventLogEntryType.SuccessAudit);
                         Send(authClient, "AuthAnsver/1*" + role, _NeedEncrypt);
                         authClient.Socket.BeginReceive(authClient.Buffer,
                             0, authClient.Buffer.Length, SocketFlags.None,
                             new AsyncCallback(ReceiveCallback),
                             authClient);
                     }
                     else
                     {
                         Send(authClient, "AuthAnsver/0/" + role, _NeedEncrypt);
                         authClient.IsAuth = false;
                         // Начало операции авторизации
                         authClient.Socket.BeginReceive(authClient.Buffer,
                             0, authClient.Buffer.Length, SocketFlags.None,
                             new AsyncCallback(AuthCallback),
                             authClient);
                         authClient.AuthCount++;
                         WinLog.Write("Ошибка авторизации клиента с IP - " + authClient.Socket.RemoteEndPoint,
                                      System.Diagnostics.EventLogEntryType.FailureAudit);
                         Send(authClient, @"mess/Wrong login or password.The number of attempts" + Convert.ToString(3 - authClient.AuthCount), _NeedEncrypt);
                     }
                 }
             }
             else
             {
                 Send(authClient, @"mess/Превышено количество попыток подключения", _NeedEncrypt);
                 CloseConnection(authClient);
             }
         }
     }
     catch (Exception ex)
     {
         WinLog.Write(ex.Message, System.Diagnostics.EventLogEntryType.Error);
         Console.WriteLine("Ошибка {0}", ex.Message);
     }
 }
        public override void sendMessage(Message.Message msg)
        {
            string head=msg.head.Split(',')[0];
            switch (head)
            {
                case "11":
                case "10":
                case "31":
                case "30":
                case "getTopics":
                case "talk":
                case "in":
                    byte[] requestbuffer = new byte[1024];
                    requestbuffer = serializeStream(msg);
                    client.sw.Write(requestbuffer, 0, requestbuffer.Length);
                    client.sw.Flush();
                    break;

            }
        }
Esempio n. 22
0
 private void UserChangeStatusRequestHandler(NetworkClient client, Message message)
 {
     var userMessage = message.GetData<UserSession>();
     client.UserSession.UserStatus = userMessage.UserStatus;
     BroadcastAll(client, Message.Create(MessageType.UserChangeStatusResponse, client.UserSession), true);
 }
Esempio n. 23
0
 private void VoiceHandler(NetworkClient client, Message message)
 {
     BroadcastChannel(client, message, true);
 }
 public void handleMsg(Message.Message msg)
 {
     try
     {
         EventArgs e = new EventArgs();
         string head = msg.head.Split(',')[0];//sometimes head will be ("talk,chatroomTopic")
         switch (head)//if it's sucessful,will and"1"in the end of head,or "0" when fail
         {
             case "0":
                 client.loginName = msg.data;
                 break;
             case "1":
                 if (am.addUser(client.loginName, msg.data))
                 {
                     msg.data = "registe successfully,welcome!" + client.loginName;
                     addText(e, client.loginName + " is regist!");
                     msg.head = "11";
                     sendMessage(msg);
                 }
                 else
                 {
                     msg.data = "this name is already used";
                     msg.head = "10";
                     sendMessage(msg);
                 }
                 break;
             case "2":
                 client.loginName = msg.data;
                 break;
             case "3":
                 if (am.authentify(client.loginName, msg.data))
                 {
                     msg.data = "login successfully,welcome!" + client.loginName;
                     addText(e, client.loginName + " is login!");
                     msg.head = "31";
                     sendMessage(msg);
                 }
                 else
                 {
                     msg.data = "fail to login,username or password is wrong";
                     msg.head = "30";
                     sendMessage(msg);
                 }
                 break;
             case "4":
                 am.removeUser(msg.data);
                 //sendMessage(msg);//tell user who out
                 break;
             case "talk"://client talk in chatroom
                 distribute(e, msg, msg.head.Split(',')[1]);
                 break;
             case "getTopics"://client get topics form server
                 listTopic(e,msg);
                 break;
             case "in"://inform that chatter is in
                 clientIn(e, msg);
                 break;
         }
     }
     catch (Exception e)
     {
         EventArgs ev = new EventArgs();
         showMsg(ev, e.Message);
     }
 }
 public override void sendMessage(Message.Message msg)
 {
     byte[] requestbuffer = new byte[1024];
     requestbuffer = serializeStream(msg);
     for (int i = 0; i < roomUser.Count; i++)
     {
         roomUser[i].sw.Write(requestbuffer, 0, requestbuffer.Length);
         roomUser[i].sw.Flush();
     }
 }
Esempio n. 26
0
 public void SendMessage(Message message)
 {
     Socket.Send(message.AsJson());
 }
Esempio n. 27
0
 public byte[] GetBytes(Message message)
 {
     return(Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(message).ToCharArray()));
 }
Esempio n. 28
0
 private void GetAllChannelsRequestHandler(NetworkClient client, Message message)
 {
     client.WriteMessage(Message.Create(MessageType.GetAllChannelsResponse, channelSessions));
 }
Esempio n. 29
0
 private void CreateUserRequestHandler(NetworkClient client, Message message)
 {
     try
     {
         userService.CreateUser(message.GetData<UserInfo>());
         client.WriteMessage(Message.Create(MessageType.CreateUserResponse,
             new SimpleResponse() { Success = true, Message = "User created" }));
     }
     catch (Exception ex)
     {
         client.WriteMessage(Message.Create(MessageType.CreateUserResponse,
             new SimpleResponse() { Success = false, Message = ex.Message }));
     }
 }
 protected virtual void clientIn(EventArgs e, Message.Message msg)
 {
     clientInDel temp = clientInEvent; //MulticastDelegate一个委托链表
     //通知所有已订阅事件的对象
     if (temp != null)
         temp(this, e, msg); //通过事件NewMail(一种特殊的委托)逐一回调客户端的方法
 }
Esempio n. 31
0
 public void Send(Message msg)
 {
     Console.WriteLine(msg);
 }
Esempio n. 32
0
        private void CredentialRequestHandler(NetworkClient client, Message message)
        {
            try
            {
                var credential = message.GetData<UserInfo>();
                // Handle credential authorization
                if (string.IsNullOrWhiteSpace(credential.Username))
                {
                    var userSession = new UserSession();
                    userSession.UserInfo = new UserInfo() { Username = "******" + new Random().Next(10000) };
                    CredentialRequestHandlerSuccess(client, userSession);
                }

                if (userService.IsUserAuthenticated(credential.Username, credential.Password))
                {
                    var userSession = new UserSession();
                    userSession.UserInfo = userService.GetUserByUsername(credential.Username);
                    CredentialRequestHandlerSuccess(client, userSession);
                }

                CredentialRequestHandlerFail(client);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                CredentialRequestHandlerFail(client);
            }
        }
Esempio n. 33
0
        private void DeleteChannelRequestHandler(NetworkClient client, Message message)
        {
            var channelFromRequest = message.GetData<Channel>();

            if (channelFromRequest.Id == LobbyChannelId)
            {
                Console.WriteLine("Cannot delete designated lobby channel id " + LobbyChannelId);
                return;
            }

            var channelFromServer = channelSessions.FirstOrDefault(c => c.Channel.Id == channelFromRequest.Id);
            if (channelFromServer == null)
            {
                Console.WriteLine("Unable to find channel id {0} in server", channelFromRequest.Id);
                return;
            }

            channelService.DeleteChannel(channelFromServer.Channel.Id);

            foreach (var userSession in channelFromServer.UserSessions)
            {
                AddUserToChannel(userSession, 0);
            }
            channelSessions.Remove(channelFromServer);

            BroadcastAll(client, Message.Create(MessageType.GetAllChannelsResponse, channelSessions), true);
        }
Esempio n. 34
0
        /// <summary>
        /// Process data sent by clients
        /// </summary>
        /// <param name="session">Session from where the message comes from</param>
        /// <param name="message">Message received</param>
        private void processData(Session session, Message message)
        {
            if (session.User != null)
            {
                switch (message.Head)
                {
                case Message.Header.QUIT:
                {
                    // Warn the user he has been disconnected
                    Message messageSuccess = new Message(Message.Header.QUIT);
                    messageSuccess.addData("success");
                    sendMessage(messageSuccess, session.Client.Client);

                    if (session.User.Chatroom != null)
                    {
                        // Warn the other users that he left
                        broadcastToChatRoom(session, "left the chatroom \"" + session.User.Chatroom.Name + "\"");
                    }

                    session.Client.Close();
                    sessionManager.removeSession(session.Token);

                    Console.WriteLine("- User logout: " + session.Token);
                }
                break;

                case Message.Header.JOIN_CR:
                    // Before joining a chatroom, let's leave the current one
                    quitCr(session, message);

                    try
                    {
                        List <string> messageList = message.MessageList;
                        if (chatroomManager.ChatroomList.Any(x => x.Name == messageList[0]))
                        {
                            session.User.Chatroom = new Chatroom(messageList[0]);
                            Console.WriteLine("- " + session.User.Login + " joined the chatroom: " + messageList[0]);

                            // Tell the client the channel has been joined
                            Message messageSuccess = new Message(Message.Header.JOIN_CR);
                            messageSuccess.addData("success");
                            messageSuccess.addData(messageList[0]);
                            sendMessage(messageSuccess, session.Client.Client);

                            //On broadcast à tous les participants de la conversations l'arrivée de l'utilisateur
                            Message messagePostBroadcast = new Message(Message.Header.POST);
                            broadcastToChatRoom(session, "joined the chatroom \"" + messageList[0] + "\"");
                        }
                    }
                    catch (ChatroomUnknownException e)
                    {
                        // Tell the client the channel has not been joined
                        Message messageSuccess = new Message(Message.Header.JOIN_CR);
                        messageSuccess.addData("error");
                        messageSuccess.addData(message.MessageList[0]);
                        sendMessage(messageSuccess, session.Client.Client);
                        messageSuccess.addData("Chatroom " + e.Message + " does not exist");
                    }
                    break;

                case Message.Header.QUIT_CR:
                    quitCr(session, message);
                    break;

                case Message.Header.CREATE_CR:
                    try
                    {
                        List <string> messageList = message.MessageList;
                        ChatroomManager.addChatroom(new Chatroom(messageList[0]));
                        ChatroomManager.save("chatrooms.db");

                        // Tell the users the chatroom has been created
                        Message messageSuccess = new Message(Message.Header.CREATE_CR);
                        messageSuccess.addData("success");
                        messageSuccess.addData(messageList[0]);
                        sendMessage(messageSuccess, session.Client.Client);

                        Console.WriteLine("- " + session.User.Login + " : chatroom has been created: " + messageList[0]);
                    }
                    catch (ChatroomAlreadyExistsException e)
                    {
                        // Warn the user the chatroom has not been created
                        Message messageError = new Message(Message.Header.CREATE_CR);
                        messageError.addData("error");
                        messageError.addData("Chatroom " + e.Message + " already exists");
                        sendMessage(messageError, session.Client.Client);
                    }
                    break;

                case Message.Header.LIST_CR:
                    Message messageListCr = new Message(Message.Header.LIST_CR);

                    foreach (Chatroom chatroom in ChatroomManager.ChatroomList.ToList())
                    {
                        messageListCr.addData(chatroom.Name);
                    }

                    sendMessage(messageListCr, session.Client.Client);
                    break;

                case Message.Header.POST:
                    Console.WriteLine("- " + session.User.Login + " : message received : " + message.MessageList[0]);
                    broadcastToChatRoom(session, message.MessageList[0]);
                    break;

                case Message.Header.LIST_USERS:
                    List <string> chatroomWantedList = message.MessageList;
                    string        chatroomWanted     = chatroomWantedList[0];

                    Message messageListUsers = new Message(Message.Header.LIST_USERS);

                    // For all users currently connected
                    foreach (Session localSession in SessionManager.SessionList.ToList())
                    {
                        // If the user is in the chatroom we want the userlist
                        if (localSession.User != null &&
                            localSession.User.Chatroom != null &&
                            localSession.User.Chatroom.Name == chatroomWanted)
                        {
                            messageListUsers.addData(localSession.User.Login);
                        }
                    }

                    sendMessage(messageListUsers, session.Client.Client);

                    break;
                }
            }
            else
            {
                switch (message.Head)
                {
                case Message.Header.REGISTER:
                    try
                    {
                        List <string> messageList = message.MessageList;
                        UserManager.addUser(messageList[0], messageList[1]);
                        UserManager.save("users.db");

                        // Tell the user his account has been created
                        Message messageSuccess = new Message(Message.Header.REGISTER);
                        messageSuccess.addData("success");
                        sendMessage(messageSuccess, session.Client.Client);

                        Console.WriteLine("- Registration success : " + messageList[0]);
                    }
                    catch (UserAlreadyExistsException e)
                    {
                        // Warn the user his account has not been created
                        Message messageSuccess = new Message(Message.Header.REGISTER);
                        messageSuccess.addData("error");
                        sendMessage(messageSuccess, session.Client.Client);

                        Console.WriteLine("- Registration failed : " + e.Message);
                    }
                    break;

                case Message.Header.JOIN:
                    try
                    {
                        List <string> messageList = message.MessageList;
                        UserManager.authentify(messageList[0], messageList[1]);
                        session.User = new User(messageList[0], messageList[1]);
                        UserManager.save("users.db");

                        Message messageSuccess = new Message(Message.Header.JOIN);
                        messageSuccess.addData("success");
                        sendMessage(messageSuccess, session.Client.Client);

                        Console.WriteLine("- Login success : " + session.User.Login);
                    }
                    catch (WrongPasswordException e)
                    {
                        Message messageSuccess = new Message(Message.Header.JOIN);
                        messageSuccess.addData("error");
                        sendMessage(messageSuccess, session.Client.Client);

                        Console.WriteLine("- Login failed : " + e.Message);
                    }

                    break;
                }
            }
        }