예제 #1
0
        //点击登录按钮
        private void button_login_Click(object sender, RoutedEventArgs e)
        {
            //向服务器发送请求
            TcpClient     tcpClient     = null;
            NetworkStream networkStream = null;

            try {
                string[] ip = textBox_ip.Text.Split(':');
                tcpClient = new TcpClient();
                IPAddress ServerIP = IPAddress.Parse(ip[0]);
                tcpClient.Connect(ServerIP, int.Parse(ip[1]));                 //建立与服务器的连接
                networkStream = tcpClient.GetStream();
                if (networkStream.CanWrite)
                {
                    TTS_Core.LoginDataPackage loginData = new TTS_Core.LoginDataPackage(textBox_id.Text, myIPAddress + ":" +
                                                                                        MyPort.ToString(), "Server", textBox_id.Text, sha256(passwordBox.Password));
                    byte[] sendBytes = loginData.DataPackageToBytes();                     //注册数据包转化为字节数组
                    networkStream.Write(sendBytes, 0, sendBytes.Length);
                }
                readRevMsg();
            }
            catch {
                MessageBox.Show("无法连接到服务器!");
                return;
            }
            finally {
                if (networkStream != null)
                {
                    networkStream.Close();
                }
                tcpClient.Close();
            }
        }
예제 #2
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;
            }
        }