编写一个服务器和一个客户端
1)服务器上保存了几个用户名和对应的密码;且能验证客户端发送过来的用户名和密码,是否和保存的某个用户名和对应的密码一致。
2)客户端能连接到服务器,并把用户在键盘上输入的用户名和密码,发送到服务器上。
服务器端
package com.lianxi.socket;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class ServerTest2 {
public static void main(String[] args){
//定义用户名和密码
Map<String,String> map=new HashMap<>();
map.put("lilining","123456");
map.put("zhengzijun","123532");
map.put("lilining2","937291");
ServerSocket ss=null;
Socket s=null;
try {
ss=new ServerSocket(9999);
s=ss.accept();
//获取输入流数据
InputStream is=s.getInputStream();
//获取输出流数据
OutputStream os= s.getOutputStream();
byte[] bytes=new byte[1024];
int b;
String s1=null;
while ((b=is.read(bytes))!=-1){
s1=new String(bytes,0,b);
}
//输入流中的数据按照,分成name和password两部分
String[] users = s1.split(",");
System.out.println(users[0]+":"+users[1]);
Set set=map.keySet();
int count=0;
//遍历map集合,验证账号、密码是否正确
for (Object s2:set){
//System.out.println(s2+":"+map.get(s2));
if (users[0].equals(s2)&&users[1].equals(map.get(s2))){
count=1;
} else {
count=0;
}
}
if (count==1){
//os.write("登录成功".getBytes());
os.write("1".getBytes());
System.out.println("登录成功");
}else {
//os.write("登陆失败".getBytes());
os.write("0".getBytes());
System.out.println("登陆失败");
}
} catch (IOException ex) {
throw new RuntimeException(ex);
}finally {
if (ss != null) {
try {
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (s != null) {
try {
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
客户端
package com.lianxi.socket;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class ClientTest2 {
public static void main(String[] args){
Socket s=null;
OutputStream os=null;
try{
s=new Socket("127.0.0.1",9999);
Scanner sc=new Scanner(System.in);
System.out.println("输入用户名");
String name= sc.next();
System.out.println("输入密码");
String password=sc.next();
String user=name+","+password;
//传入服务端
os=s.getOutputStream();
os.write(user.getBytes());
os.flush();
s.shutdownOutput();
InputStream is = s.getInputStream();
byte[] bytes=new byte[1024];
int result = 0;
while ((result = is.read(bytes)) != -1) {
String s1=new String(bytes,0,result);
if (s1.equals("1")) {
System.out.println("登录成功");
} else if (s1.equals("0")) {
System.out.println("登录失败");
}
}
} catch (UnknownHostException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}finally {
if (s != null) {
try {
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}