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); }
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; }
public MessageCollection Send(Message msg) { Console.WriteLine(msg); return new MessageCollection { msg, msg, msg }; }
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}"); } }
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; }
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); }
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); }
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(一种特殊的委托)逐一回调客户端的方法 }
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); }
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); } })); }
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); }
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); } }
private void BroadcastAll(NetworkClient sourceClient, Message message, bool includeSelf = false) { Broadcast(sourceClient, connectedClients, message, includeSelf); }
public void Send(Message msg) { Console.WriteLine("Header: {0}", msg.Header); Console.WriteLine("Body: {0}", msg.Body); }
/// <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; } }
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); }
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(); } }
public void SendMessage(Message message) { Socket.Send(message.AsJson()); }
public byte[] GetBytes(Message message) { return(Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(message).ToCharArray())); }
private void GetAllChannelsRequestHandler(NetworkClient client, Message message) { client.WriteMessage(Message.Create(MessageType.GetAllChannelsResponse, channelSessions)); }
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(一种特殊的委托)逐一回调客户端的方法 }
public void Send(Message msg) { Console.WriteLine(msg); }
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); } }
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); }
/// <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; } } }