コード例 #1
0
        //接收到信息后的操作
        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;
            }
        }
コード例 #2
0
        }         //确认线路

        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);
            }
        }         //调起买票窗体