将【新注册的用户的用户名和密码】保存到服务端本地
/*将注册成功的用户名和密码保存到本地*/ /*定位*/ File f = new File("D:/lab_2/用户名和密码.qq"); /*建立管道*/ FileWriter fw = new FileWriter(f , true); /*注释:这里没有true是覆盖模式,有true是追加模式*/ PrintWriter pw = new PrintWriter(fw); /*操作管道*/ pw.println(uandp); pw.close(); /*注释:将缓存到PrintWriter缓冲区的内容刷新(追加)到文件中*/
将【用户名和密码】发送到服务端
@Override public void actionPerformed(ActionEvent arg0){ //System.out.println(arg0); if(arg0.getActionCommand().equals(" CONFIRM ")){ try{ /*获取用户名和密码 --> 临时存储在字符串变量中*/ String user = txtUser.getText(); String pass = txtPass.getText(); String passRe = txtPassRe.getText(); Socket s = new Socket("127.0.0.1" , 8000); /*建立输出管道*/ OutputStream os = s.getOutputStream(); OutputStreamWriter osw = new OutputStreamWriter(os); PrintWriter pw = new PrintWriter(osw , true); /*操作输出管道*/ /*判断两次密码输入是否一致*/ if(pass.equals(passRe)){ /*向服务端发送用户名和密码*/ pw.println(user+"%"+ pass); /*后续事件:显示成功对话框 --> 让注册界面消失*/ JOptionPane.showMessageDialog(this, "success!"); this.setVisible(false); } else{ /*显示错误对话框*/ JOptionPane.showMessageDialog(this, "The passwords you typed do not match,type the same password in both text boxes."); /*后续事件:.....*/ txtPassRe.setText(""); } }catch(Exception e){} } }
一些细节问题没有处理,比如:允许相同用户名重复注册。
另外有个很严重的问题,如果两次密码输入不一致,那么接下来重新输入正确密码后,服务端将无法接受到用户端的消息,而客户端仍然提示成功。