//点击登录按钮 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(); } }
//接收到信息后的操作 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; } }