public classServer {public static final int PORT = 12345;//监听的端口号
public static voidmain(String[] args) {
System.out.println("服务器启动...\n");
Server server= newServer();
server.init();
}public voidinit() {try{
ServerSocket serverSocket= newServerSocket(PORT);while (true) {//一旦有堵塞, 则表示服务器与客户端获得了连接
Socket client =serverSocket.accept();//处理这次连接
newHandlerThread(client);
}
}catch(Exception e) {
System.out.println("服务器异常: " +e.getMessage());
}
}private class HandlerThread implementsRunnable {privateSocket socket;publicHandlerThread(Socket client) {
socket=client;new Thread(this).start();
}public voidrun() {try{//读取客户端数据
DataInputStream input = newDataInputStream(socket.getInputStream());
String clientInputStr= input.readUTF();//这里要注意和客户端输出流的写方法对应,否则会抛 EOFException//处理客户端数据
System.out.println("客户端发过来的内容:" +clientInputStr);//向客户端回复信息
DataOutputStream out = newDataOutputStream(socket.getOutputStream());
System.out.print("请输入:\t");//发送键盘输入的一行
String s = new BufferedReader(newInputStreamReader(System.in)).readLine();
out.writeUTF(s);
out.close();
input.close();
}catch(Exception e) {
System.out.println("服务器 run 异常: " +e.getMessage());
}finally{if (socket != null) {try{
socket.close();
}catch(Exception e) {
socket= null;
System.out.println("服务端 finally 异常:" +e.getMessage());
}
}
}
}
}
}