1.网络编程–TCP协议下模拟多用户登录
1.1 客户端
Socket client = new Socket("127.0.0.1",8888);
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入用户名");
String username = reader.readLine();
System.out.println("请输入用户密码");
String password = reader.readLine();
DataOutputStream output =new DataOutputStream(client.getOutputStream());
output.writeUTF("username:"+username+"&"+"password:"+password);
output.flush();
DataInputStream input = new DataInputStream(client.getInputStream());
String result = input.readUTF();
System.out.println(result);
input.close();
output.close();
reader.close();
client.close();
1.2 服务器端
ServerSocket socket = new ServerSocket(8888);
Socket server = socket.accept();
DataInputStream inputStream = new DataInputStream(server.getInputStream());
String message = inputStream.readUTF();
String[] mess = message.split("&");
String[] username = mess[0].split(":");
String[] password = mess[1].split(":");
DataOutputStream OutputStream = new DataOutputStream(server.getOutputStream());
if("tt".equals(username[1])&&"123".equals(password[1])){
OutputStream.writeUTF("yes");
}else {
OutputStream.writeUTF("no");
}
OutputStream.flush();
OutputStream.close();
inputStream.close();
server.close();
socket.close();
2.加入多线程模拟多用户登录
2.1 客户端
Socket client = new Socket("127.0.0.1",8888);
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入用户名");
String username = reader.readLine();
System.out.println("请输入用户密码");
String password = reader.readLine();
DataOutputStream output =new DataOutputStream(client.getOutputStream());
output.writeUTF("username:"+username+"&"+"password:"+password);
output.flush();
DataInputStream input = new DataInputStream(client.getInputStream());
String result = input.readUTF();
System.out.println(result);
input.close();
output.close();
reader.close();
client.close();
2.2 服务器端
public class MultiServer {
public static void main(String[] args) throws IOException {
ServerSocket socket = new ServerSocket(8888);
boolean connection = true;
while (connection) {
System.out.println("一个用户创建连接");
Socket server = socket.accept();
new Thread(new ManyUser(server)).start();
}
socket.close();
}
static class ManyUser implements Runnable {
private DataOutputStream output;
private DataInputStream input;
private Socket server;
public ManyUser(Socket server) throws IOException {
this.output = new DataOutputStream(server.getOutputStream());
this.input = new DataInputStream(server.getInputStream());
this.server = server;
}
public String read() {
String message = "";
try {
message = input.readUTF();
} catch (IOException e) {
e.printStackTrace();
}
return message;
}
public void write(String message) {
try {
output.writeUTF(message);
output.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
public void close() {
if(output!=null){
try {
output.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}if(input!=null){
try {
input.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
@Override
public void run() {
String message=read();
String[] mess = message.split("&");
String[] username = mess[0].split(":");
String[] password = mess[1].split(":");
if ("tt".equals(username[1]) && "123".equals(password[1])) {
write("登录成功");
} else {
write("登录失败");
}
close();
}
}
}
六级标题