服务器端:package p3;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
//多线程版本,一直监听,客户端做的事情是现在线程应该做的事情
public class SocketServer {
public static void main(String[] args) throws IOException, ClassNotFoundException {
ServerSocket serverSocket = new ServerSocket(5000);
Socket socket;
//接受客户端传输的对象
LoginThread loginThread;
while (true){
socket = serverSocket.accept();
loginThread = new LoginThread(socket);
loginThread.start();
}
}
}
线程类:package p3;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.OutputStream;
import java.net.Socket;
public class LoginThread extends Thread {
private Socket socket;
public LoginThread(Socket socket){
this.socket = socket;
}
@Override
public void run() {
try {
//打开输入输出流
InputStream is=socket.getInputStream();
OutputStream os=socket.getOutputStream();
//反序列化
ObjectInputStream ois=new ObjectInputStream(is);
//获取客户端信息,即从输入流读取信息
//BufferedReader br=new BufferedReader(new InputStreamReader(ois));
User user=(User)ois.readObject();
if(!(user==null)){
System.out.println(Thread.currentThread().getName() + "-------->" +user.toString());
}
//给客户端一个响应,即向输出流写入信息
String reply=Thread.currentThread().getName()+"欢迎你,登录成功!";
os.write(reply.getBytes());
//关闭资源
ois.close();
os.close();
is.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
客户端1:package p3;
import java.io.*;
import java.net.Socket;
public class SocketClient {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost",5000);
//请求服务器
OutputStream outputStream = socket.getOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
User user = new User("admin","123456");
objectOutputStream.writeObject(user);
//接受服务器响应
InputStream inputStream = socket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line = bufferedReader.readLine();
while (line!=null){
System.out.println(line);
line = bufferedReader.readLine();
}
//释放资源
outputStream.close();
objectOutputStream.close();
inputStream.close();
bufferedReader.close();
}
}
客户端2:package p3;
import java.io.*;
import java.net.Socket;
public class SocketClient2 {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost",5000);
//请求服务器
OutputStream outputStream = socket.getOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
User user = new User("admin2","1234562");
objectOutputStream.writeObject(user);
//接受服务器响应
InputStream inputStream = socket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line = bufferedReader.readLine();
while (line!=null){
System.out.println(line);
line = bufferedReader.readLine();
}
//释放资源
outputStream.close();
objectOutputStream.close();
inputStream.close();
bufferedReader.close();
}
}
User类:package p3;
import java.io.Serializable;
public class User implements Serializable {
private String name;
private String pwd;
@Override
public String toString() {
return "User{" +
"name='" + name + '\\'' +
", pwd='" + pwd + '\\'' +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public User(String name, String pwd) {
this.name = name;
this.pwd = pwd;
}
}