//接收到信息后的操作 public void readRevMsg(TcpClient tcpClient) { byte[] bytes = ReadFromTcpClient(tcpClient); //获取数据 TTS_Core.DataPackage dataPackage = new TTS_Core.DataPackage(bytes); //第一次解包 string message = string.Empty; //数据包分类操作,第二次解包 switch (dataPackage.MessageType) { case TTS_Core.MESSAGETYPE.K_QUERY_DATA_PACKAGE: //查询数据包类 TTS_Core.QueryDataPackage queryData = new TTS_Core.QueryDataPackage(bytes); Console.WriteLine("Get the DataPackage of {0}!", queryData.QueryType.ToString()); break; case TTS_Core.MESSAGETYPE.K_LOGIN_DATA_PACKAGE: TTS_Core.LoginDataPackage loginData = new TTS_Core.LoginDataPackage(bytes); Console.WriteLine("Get the DataPackage of {0}!", loginData.MessageType.ToString()); break; case TTS_Core.MESSAGETYPE.K_REGISTER_DATA_PACKAGE: TTS_Core.RegisterDataPackage registerData = new TTS_Core.RegisterDataPackage(bytes); Console.WriteLine("Get the DataPackage of {0}!", registerData.MessageType.ToString()); break; default: Console.WriteLine("Get the DataPackage of {0}!", dataPackage.MessageType.ToString()); return; } }
} //确认线路 private void CallBuyTicketWindow(string Enter, string Line, string Leave) { ClientWindow.TicketQueryInfo subinfo1 = new ClientWindow.TicketQueryInfo(); subinfo1.EnterStationNumber = int.Parse(Enter); subinfo1.Line = int.Parse(Line); subinfo1.LeaveStationNumber = int.Parse(Leave); subinfo1.StartTime = this.ticketQueryInfo.StartTime; subinfo1.EndTime = this.ticketQueryInfo.EndTime; string info1Msg = Enter + "\n" + Line + "\n" + Leave + "\n" + ticketQueryInfo.StartTime.ToString() + "\n" + ticketQueryInfo.EndTime.ToString(); TcpClient tcpClient = null; NetworkStream networkStream = null; try { tcpClient = new TcpClient(); tcpClient.Connect(myIPAddress, ServerPort); //建立与服务器的连接 networkStream = tcpClient.GetStream(); if (networkStream.CanWrite) { TTS_Core.QueryDataPackage data = new TTS_Core.QueryDataPackage(UserID, myIPAddress + ":" + MyPort.ToString(), "server", TTS_Core.QUERYTYPE.K_TICKETINFO_QUERY, info1Msg); byte[] sendBytes = data.DataPackageToBytes(); //注册数据包转化为字节数组 networkStream.Write(sendBytes, 0, sendBytes.Length); } var newClient = tcpListener.AcceptTcpClient(); var bytes = ReadFromTcpClient(newClient); //获取数据 var package = new TTS_Core.QueryDataPackage(bytes); subinfo1.EnterStationName = package.ExtraMsg.Split('\r')[0].Split('\n')[0]; subinfo1.LineName = package.ExtraMsg.Split('\r')[0].Split('\n')[1]; subinfo1.LeaveStationName = package.ExtraMsg.Split('\r')[0].Split('\n')[2]; info1Msg = package.ExtraMsg; } catch { MessageBox.Show("指定时段内无可选车次!"); return; } finally { if (networkStream != null) { networkStream.Close(); } tcpClient.Close(); } BuyTicketWindow buy = new BuyTicketWindow(subinfo1, info1Msg); buy.ShowDialog(); if (buy.selectTicket.TrainID != 0) { allBuyTicket.Add(buy.selectTicket); } } //调起买票窗体