private void send_Click(object sender, EventArgs e) { Hashtable send = new Hashtable(); send.Add("VER", PublicVariable4CS.ver); send.Add("TYPE", "RESET-USER-PWD"); send.Add("USER", PublicVariable4CS.UserName); send.Add("PWD", this.yourPwd.Text); send.Add("TARGET-USER", this.targetUser.Text); TcpClient tc2 = new TcpClient(PublicVariable4CS.ServerIP, PublicVariable4CS.ServerPort); NetworkStream ns2 = tc2.GetStream(); byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(PublicVariable4CS.setMessages(send)); ns2.Write(byteArray, 0, byteArray.Length); byte[] bt = new byte[10240]; int count = ns2.Read(bt, 0, bt.Length); Hashtable messageTable = PublicVariable4CS.getMessages(System.Text.Encoding.UTF8.GetString(bt)); if (messageTable.Contains("TYPE")) { if ((string)messageTable["TYPE"] == "RESET-USER-PWD-RE") { if (messageTable.Contains("RE_ANSWER")) { if ((string)messageTable["RE_ANSWER"] == "TRUE") { MessageBox.Show("重置密码成功"); } else if ((string)messageTable["RE_ANSWER"] == "FALSE") { MessageBox.Show("重置密码失败:" + (string)messageTable["RE_MESSAGE"]); } } else { PublicVariable4CS.errorMessage("服务器答复异常-无答复"); } } else { PublicVariable4CS.errorMessage("服务器响应异常-" + messageTable["TYPE"]); } } else { PublicVariable4CS.errorMessage("服务器响应异常-无答复类型"); } }
/// <summary> /// 本地监听线程(监听本地请求并发送建立端口转发申请) /// </summary> public static void localListener1(object obj) { try { String[] mes = (String[])obj; int port = int.Parse(mes[0]); String remoteAddress = mes[1]; TcpListener tl = new TcpListener(port); while (true) { try { Hashtable sendTable = new Hashtable(); tl.Start(); TcpClient tc1 = tl.AcceptTcpClient();//这里是等待数据再执行下边,不会100%占用cpu TcpClient tc2 = new TcpClient(PublicVariable4CS.ServerIP, PublicVariable4CS.ServerPort); NetworkStream ns2 = tc2.GetStream(); sendTable.Add("VER", PublicVariable4CS.ver); sendTable.Add("TYPE", "CONNECT"); sendTable.Add("USER", PublicVariable4CS.UserName); sendTable.Add("PWD", PublicVariable4CS.PassWord); string[] tmp = remoteAddress.Split(':'); sendTable.Add("TOTAL_IP", tmp[0]); sendTable.Add("TOTAL_PORT", tmp[1]); byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(PublicVariable4CS.setMessages(sendTable)); ns2.Write(byteArray, 0, byteArray.Length); byte[] bt = new byte[10240]; int count = ns2.Read(bt, 0, bt.Length); string reMessage = System.Text.Encoding.UTF8.GetString(bt); Hashtable reMesTable = PublicVariable4CS.getMessages(reMessage); if ((string)reMesTable["TYPE"] == "CONNECT-RE") { if ((string)reMesTable["RE_ANSWER"] == "TRUE") { object obj1 = (object)(new TcpClient[] { tc1, tc2 }); object obj2 = (object)(new TcpClient[] { tc2, tc1 }); ThreadPool.QueueUserWorkItem(new WaitCallback(transfer), obj1); ThreadPool.QueueUserWorkItem(new WaitCallback(transfer), obj2); } else if ((string)reMesTable["RE_ANSWER"] == "FALSE") { PublicVariable4CS.errorMessage("端口转发被拒绝:" + (string)reMesTable["RE_MESSAGE"]); } else { throw new Exception("服务器反馈数据异常!"); } } else { PublicVariable4CS.errorMessage("错误的返回类型" + (string)reMesTable["TYPE"]); } } catch (Exception ex) { PublicVariable4CS.errorMessage(ex.ToString()); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
private void button1_Click(object sender, EventArgs e) { if (this.saveUsername.Checked) { INIhelp.SetValue("userid", this.userName.Text); INIhelp.SetValue("userpwd", this.passWord.Text); INIhelp.SetValue("serverip", this.serverIP.Text); INIhelp.SetValue("serverport", this.serverPort.Text); INIhelp.SetValue("saveuser", "true"); } else { INIhelp.SetValue("userid", ""); INIhelp.SetValue("userpwd", ""); INIhelp.SetValue("saveuser", "false"); } PublicVariable4CS.UserName = this.userName.Text; PublicVariable4CS.PassWord = this.passWord.Text; PublicVariable4CS.ServerIP = this.serverIP.Text; PublicVariable4CS.ServerPort = int.Parse(this.serverPort.Text); PublicVariable4CS.SaveUser = this.saveUsername.Checked; PublicVariable4CS.ver = 2.0; PublicVariable4CS.serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress ip = IPAddress.Parse(PublicVariable4CS.ServerIP); IPEndPoint point = new IPEndPoint(ip, PublicVariable4CS.ServerPort); try { //绑定IP地址和端口号 PublicVariable4CS.serverSocket.Connect(point); Hashtable sendTable = new Hashtable(); sendTable.Add("VER", PublicVariable4CS.ver); sendTable.Add("TYPE", "LOGIN"); sendTable.Add("USER", PublicVariable4CS.UserName); sendTable.Add("PWD", PublicVariable4CS.PassWord); //发送登录信息 PublicVariable4CS.serverSocket.Send(Encoding.UTF8.GetBytes(PublicVariable4CS.setMessages(sendTable))); byte[] dat = new byte[2048]; String data = System.Text.Encoding.UTF8.GetString(dat, 0, PublicVariable4CS.serverSocket.Receive(dat)); Hashtable getTable = PublicVariable4CS.getMessages(data); if ((string)getTable["TYPE"] == "LOGIN-RE") { if ((string)getTable["RE_ANSWER"] == "TRUE") { PublicVariable4CS.UserDesc = (string)getTable["USERDESC"]; PublicVariable4CS.INHERIT = (string)getTable["INHERIT"]; PublicVariable4CS.login = true; this.Close(); } else if ((string)getTable["RE_ANSWER"] == "FALSE") { MessageBox.Show("登陆失败:" + (string)getTable["RE_MESSAGE"]); } else { String a = "服务器响应异常!" + data; PublicVariable4CS.errorMessage(a); } } else { PublicVariable4CS.errorMessage("答复类型错误:" + (string)getTable["TYPE"]); } } catch (Exception ex) { PublicVariable4CS.errorMessage("服务器连接错误,请检查服务器地址是否正确,并保证网络连接正常!\n" + ex); } ; }
private void changPwdButton_Click(object sender, EventArgs e) { try { if (this.oldpwd.Text == "") { MessageBox.Show("原密码不能为空!"); return; } else if (this.newpwd.Text == "") { MessageBox.Show("新密码不能为空!"); return; } else if (this.newpwd2.Text == "") { MessageBox.Show("确认密码不能为空!"); return; } else if (this.newpwd2.Text != this.newpwd.Text) { MessageBox.Show("两次输入的密码不同!"); return; } Hashtable sendTable = new Hashtable(); sendTable.Add("VER", PublicVariable4CS.ver); sendTable.Add("TYPE", "CHANGPWD"); sendTable.Add("USER", PublicVariable4CS.UserName); sendTable.Add("PWD", this.oldpwd.Text); sendTable.Add("NEWPWD", this.newpwd.Text); TcpClient tc2 = new TcpClient(PublicVariable4CS.ServerIP, PublicVariable4CS.ServerPort); NetworkStream ns2 = tc2.GetStream(); byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(PublicVariable4CS.setMessages(sendTable)); ns2.Write(byteArray, 0, byteArray.Length); byte[] bt = new byte[10240]; int count = ns2.Read(bt, 0, bt.Length); Hashtable messageTable = PublicVariable4CS.getMessages(System.Text.Encoding.UTF8.GetString(bt)); if (messageTable.Contains("TYPE")) { if ((string)messageTable["TYPE"] == "CHANGPWD-RE") { if (messageTable.Contains("RE_ANSWER")) { if ((string)messageTable["RE_ANSWER"] == "TRUE") { MessageBox.Show("密码修改成功"); } else if ((string)messageTable["RE_ANSWER"] == "FALSE") { MessageBox.Show("密码修改失败:" + (string)messageTable["RE_MESSAGE"]); } } else { PublicVariable4CS.errorMessage("服务器答复异常-无答复"); } } else { PublicVariable4CS.errorMessage("服务器响应异常-" + messageTable["TYPE"]); } } else { PublicVariable4CS.errorMessage("服务器响应异常-无答复类型"); } }catch (Exception ex) { PublicVariable4CS.errorMessage("内部异常:" + ex); } }