Client客户端
接收键盘输入的信息传给服务器端,由服务器端验证后,客户端接收服务器端传回的信息。
public class LoginClientTest {
public static void main(String[] args) throws UnknownHostException, IOException {
// TODO Auto-generated method stub
Socket socket = new Socket(InetAddress.getByName("10.0.185.54"),32145);
System.out.println("客户端启动...");
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = null;
byte[] arr = new byte[1024];
int len = 0;
while((line = br.readLine())!=null){
if("over".equals(line))
break;
// System.out.println("lala");
out.write(line.getBytes());
// out.write("\r\n".getBytes());
len = in.read(arr);
System.out.println(new String(arr,0,len));
}
br.close();
out.close();
in.close();
socket.close();
}
}
Server服务器端
接收客户端传来的数据信息,跟集合(模拟数据库)中的数据匹配,若有,传回登陆成功的信息。
public class LoginServerTest {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
ServerSocket server = new ServerSocket(32145);
Socket socket = server.accept();
OutputStream out = socket.getOutputStream();
InputStream in = socket.getInputStream();
// BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line = null;
byte [] arr = new byte[1024];
int len =0;
while((len = in.read(arr))!=-1){
//new String(arr,0,len).equals("aaa")
String str = new String(arr,0,len);
boolean bool = LoginTool1.Check(str);
if(bool){
out.write((str+",欢迎光临").getBytes());
System.out.println(str+",已登录");
}
else{
//修改
out.write((str+",该用户不存在").getBytes());
System.out.println(str+"尝试登陆");
}
}
in.close();
out.close();
socket.close();
}
}
class LoginTool1{
//修改 原来没有new对象,所以是空
public static Set<String> set = new HashSet<String>();
static{
set.add("aaa");
set.add("bbb");
set.add("ccc");
}
//set.add("aa");
public static boolean Check(String s){
if(set.contains(s)){
return true;
}
else
return false;
}
}
单线程的模式,只能与一个客户端相连。