//接收到信息后的操作 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 ListenThreadMethod() { * TcpClient tcpClient = null; * ReadDataF readDataF = new ReadDataF(readRevMsg); * while (true) * { * try * { * //同步阻塞 * tcpClient = tcpListener.AcceptTcpClient(); * //异步调用 * readDataF.BeginInvoke(tcpClient, null, null); * } * catch { } * } * } */ //点击注册按钮 private void button_register_Click(object sender, RoutedEventArgs e) { //向服务器发送请求 if (System.Text.RegularExpressions.Regex.IsMatch(textBox_id.Text, @"^[A-Za-z_0-9]{4,12}$") == false) { MessageBox.Show("用户ID要求由4-12位数字、字母和下划线构成!"); return; } if (System.Text.RegularExpressions.Regex.IsMatch(passwordBox.Password, @"^[A-Za-z_0-9]{4,12}$") == false) { MessageBox.Show("密码要求由4-12位数字、字母和下划线构成!"); return; } 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.RegisterDataPackage registerData = new TTS_Core.RegisterDataPackage(textBox_id.Text, myIPAddress + ":" + MyPort.ToString(), "Server", textBox_id.Text, sha256(passwordBox.Password)); byte[] sendBytes = registerData.DataPackageToBytes(); //注册数据包转化为字节数组 networkStream.Write(sendBytes, 0, sendBytes.Length); } readRevMsg(); } catch { MessageBox.Show("无法连接到服务器!"); return; } finally { if (networkStream != null) { networkStream.Close(); } tcpClient.Close(); } }