JAVA/C++ Socket编程验证用户名密码正确性 100
用C++或者JAVA写两段代码。一个服务器端一个客户端,建立socket通道,服务器端通过端口监听。客户端初始显示pleaseinputusername,然后发送给服务器...
用C++或者JAVA写两段代码。 一个服务器端一个客户端,建立socket通道,服务器端通过端口监听。 客户端初始显示please input user name,然后发送给服务器端,服务器端返回please input password。 输入完后把用户名和密码发送给服务器端,服务器端跟password.txt 文件里预先输入的用户名和密码比对,如果正确则返回一个succeed结果,如果错误就返回wrong password or username 然后客户端关闭socket。服务器端继续监听。
展开
2个回答
展开全部
java代码
客户端:
public void landContents(){
//点击登陆,与服务器端建立连接
String name=nametf.getText();
String pwd=pwdtf.getText();
try {
Socket sk=new Socket("127.0.0.1",8821);
PrintWriter pw=new PrintWriter(sk.getOutputStream());
pw.println("登陆"+","+name+","+pwd);
pw.flush();
BufferedReader br=new BufferedReader(new InputStreamReader(sk.getInputStream()));
String str=br.readLine();
if(str.equals("用户不存在")){
JOptionPane.showMessageDialog(null,"用户不存在,请重新填写","提示信息", 2);
nametf.setText("");
pwdtf.setText("");
nametf.requestFocus();
}else if(pwd.equals(str)){
this.setVisible(false);
dispose();
new MainWindow().setVisible(true);
}else{
JOptionPane.showMessageDialog(null,"密码错误,请重新输入","提示信息", 2);
pwdtf.setText("");
pwdtf.requestFocus();
}
} catch (Exception e) {
e.printStackTrace();
}
}
服务端:
public void run() {
if(!file.exists()){
file.mkdir();//如果名为用户注册信息的文件不存在,则创建
}
try {
br=new BufferedReader(new InputStreamReader(sk.getInputStream()));
br_str=br.readLine();
br_split=br_str.split(",");//逗号作为分隔符将服务器从客户端获得的信息转换为一个字符串数组
if(br_split[0].equals("注册")){
File f=new File(file,br_split[1]+".txt");
if(f.exists()){
PrintWriter pw=new PrintWriter(sk.getOutputStream());
pw.println("用户已存在");
pw.flush();
}else{
f.createNewFile();
BufferedWriter bw=new BufferedWriter(new FileWriter(f));
bw.write(br_str);
bw.flush();
bw.close();
pw=new PrintWriter(sk.getOutputStream());
pw.println("用户名不存在");
pw.flush();
}
}else if(br_split[0].equals("登陆")){
File f=new File(file,br_split[1]+".txt");
if(!f.exists()){
pw=new PrintWriter(sk.getOutputStream());
pw.println("用户名不存在");
pw.flush();
}else{
BufferedReader brr=new BufferedReader(new FileReader(f));
String read=brr.readLine();
String[] read_split=read.split(",");
pw=new PrintWriter(sk.getOutputStream());
pw.println(read_split[2]);
pw.flush();
pw.close();
}
}
客户端:
public void landContents(){
//点击登陆,与服务器端建立连接
String name=nametf.getText();
String pwd=pwdtf.getText();
try {
Socket sk=new Socket("127.0.0.1",8821);
PrintWriter pw=new PrintWriter(sk.getOutputStream());
pw.println("登陆"+","+name+","+pwd);
pw.flush();
BufferedReader br=new BufferedReader(new InputStreamReader(sk.getInputStream()));
String str=br.readLine();
if(str.equals("用户不存在")){
JOptionPane.showMessageDialog(null,"用户不存在,请重新填写","提示信息", 2);
nametf.setText("");
pwdtf.setText("");
nametf.requestFocus();
}else if(pwd.equals(str)){
this.setVisible(false);
dispose();
new MainWindow().setVisible(true);
}else{
JOptionPane.showMessageDialog(null,"密码错误,请重新输入","提示信息", 2);
pwdtf.setText("");
pwdtf.requestFocus();
}
} catch (Exception e) {
e.printStackTrace();
}
}
服务端:
public void run() {
if(!file.exists()){
file.mkdir();//如果名为用户注册信息的文件不存在,则创建
}
try {
br=new BufferedReader(new InputStreamReader(sk.getInputStream()));
br_str=br.readLine();
br_split=br_str.split(",");//逗号作为分隔符将服务器从客户端获得的信息转换为一个字符串数组
if(br_split[0].equals("注册")){
File f=new File(file,br_split[1]+".txt");
if(f.exists()){
PrintWriter pw=new PrintWriter(sk.getOutputStream());
pw.println("用户已存在");
pw.flush();
}else{
f.createNewFile();
BufferedWriter bw=new BufferedWriter(new FileWriter(f));
bw.write(br_str);
bw.flush();
bw.close();
pw=new PrintWriter(sk.getOutputStream());
pw.println("用户名不存在");
pw.flush();
}
}else if(br_split[0].equals("登陆")){
File f=new File(file,br_split[1]+".txt");
if(!f.exists()){
pw=new PrintWriter(sk.getOutputStream());
pw.println("用户名不存在");
pw.flush();
}else{
BufferedReader brr=new BufferedReader(new FileReader(f));
String read=brr.readLine();
String[] read_split=read.split(",");
pw=new PrintWriter(sk.getOutputStream());
pw.println(read_split[2]);
pw.flush();
pw.close();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询