package com.qiku.yrc.day25;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
// 要求:使用缓冲流提升效率、使用线程支持多个客户端同时连接并发消息
public class ServerTest02 {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = null;//代表服务器的 socket
Socket socket = null;//客户端
try {
serverSocket = new ServerSocket(8080);
while (true){
System.out.println("等待客户的连接");
socket = serverSocket.accept();
System.out.println("客户端" + socket.getInetAddress() + "链接成功");
ServerThread st=new ServerThread(socket);
Thread t = new Thread(st);
t.start();
}
}catch (IOException e){
e.printStackTrace();
}finally {
if (serverSocket != null){
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}}
package com.qiku.yrc.day25;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class ServerThread implements Runnable{
private Socket socket;
public ServerThread(Socket socket) {
this.socket=socket;
}
@Override
public void run() {
BufferedReader br=null;
PrintStream ps=null;
try {
br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
ps = new PrintStream( socket.getOutputStream());
while (true){
String clientMsg = br.readLine();//读 客户端发来的消息
if (null != clientMsg){
System.out.println("客户端说:" + clientMsg);
ps.println("收到~ ");
}
}
} catch (IOException e) {
e.printStackTrace();
}finally {
if (ps != null){
ps.close();
}
if (br != null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (socket != null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}