private void ClientDataReceivedHandler(object sender, BasicLibrary.DataStructure.SocketMessageEventArgs e) { this.Invoke(new Action(() => { var bytes = new byte[e.Size]; Array.Copy(e.Buffer, bytes, e.Size); var currentEP = e.EndPoint as IPEndPoint; var convention = MyHelper.BinaryDeserializeObject <MessageConvention>(bytes); if (convention.MsgType == MessageType.OccupySeat) { var clients = _server.TcpClientListeners; seats.Add(new Seat() { SeatNumber = convention.Seat.SeatNumber, UserName = convention.Seat.UserName, IPEndPoint = currentEP }); foreach (var client in clients) { if (client.HostName == currentEP.Address.ToString() && client.Port == currentEP.Port) { continue; } client.SendMessage(bytes); } } else if (convention.MsgType == MessageType.QueryOccupiedSeats) { var ss = new MessageConvention(); ss.MsgType = MessageType.QueryOccupiedSeats; ss.OccupiedSeats = seats; var bs = MyHelper.BinarySerializeObject <MessageConvention>(ss); _server.SendMessage(bs, currentEP.Address.ToString(), currentEP.Port); } else if (convention.MsgType == MessageType.Talk) { var msg = System.Text.Encoding.ASCII.GetString(bytes); var rm = new ReceivedMessageEntry(msg, e.EndPoint.ToString()); RecordMessage(rm); } })); }
private void ServerDataReceivedHandler(object sender, SocketMessageEventArgs e) { var msg = MyHelper.BinaryDeserializeObject <MessageConvention>(e.Buffer); if (msg.MsgType == MessageType.OccupySeat) { _viewSeat.UserSitdownAction(msg.Seat.SeatNumber, msg.Seat.UserName); } else if (msg.MsgType == MessageType.QueryOccupiedSeats) { var os = msg.OccupiedSeats; foreach (var item in os) { _viewSeat.UserSitdownAction(item.SeatNumber, item.UserName); } } else if (msg.MsgType == MessageType.UserLeave) { _viewSeat.UserStandupAction(msg.Seat.SeatNumber, msg.Seat.UserName); } }