Server端:
public class Server {
public static void main(String[] args) {
final int DEFAULT_PORT = 8888;
ServerSocket serverSocket = null;
final String QUIT = "quit";
try {
// 1.绑定监听端口
serverSocket = new ServerSocket(DEFAULT_PORT);
System.out.println("启动服务器,监听端口:" + DEFAULT_PORT);
while (true) {
// 2.等待客户端连接
Socket socket = serverSocket.accept();
System.out.println("客户端:【" + socket.getPort() + "】已连接");
// 获取客户端传来的msg
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// 服务端向客户端发送msg
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String msg = null;
while ((msg = reader.readLine()) != null) {
// 3.读取客户端发来的信息
System.out.println("客户端:【" + socket.getPort() + "】:" + msg);
// 4.回复客户端的消息
writer.write("服务器:收到 " + msg + "\n");
writer.flush();
// 5.查看客户端发来的信息是否退出
if (QUIT.equals(msg)) {
System.out.println("客户端:【" + socket.getPort() + "】断开连接");
break;
}
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (serverSocket != null) {
try {
serverSocket.close();
System.out.println("关闭ServerSocket!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
Client端:
public class Client {
public static void main(String[] args) {
final String QUIT = "quit";
final String DEFAULT_SERVER_HOST = "127.0.0.1";
final int DEFAULT_SERVER_PORT = 8888;
Socket socket = null;
BufferedWriter writer = null;
try {
// 1.创建Socket
socket = new Socket(DEFAULT_SERVER_HOST, DEFAULT_SERVER_PORT);
// 2.创建IO流
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
// 3.等待用户输入
BufferedReader consolReader = new BufferedReader(new InputStreamReader(System.in));
while (true) {
String input = consolReader.readLine();
// 4.发生信息给服务器
writer.write(input + "\n");
writer.flush();
// 5.读取服务器返回的信息
String msg = reader.readLine();
System.out.println(msg);
// 6.查看用户是否退出
if (QUIT.equals(input)) { break; }
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (writer != null) {
try {
writer.close();
System.out.println("关闭Socket");
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}