服务器相关代码
public class Server {
public static void main(String[] args) {
final String QUIT = "quit";
final int DEFAULT_PORT = 8888;
ServerSocket serverSocket = null;
try {
// 绑定监听端口
serverSocket = new ServerSocket(DEFAULT_PORT);
System.out.println("启动服务器,监听端口:" + DEFAULT_PORT);
while (true) {
// 等待客户端连接,阻塞
Socket socket = serverSocket.accept();
System.out.println("收到客户端[" + socket.getPort() + "]已经连接了");
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// 写入数据
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
// 读取客户端发送的消息
String msg = null;
while ((msg = reader.readLine()) != null) {
// msg = reader.readLine();
System.out.println("客户端[" + socket.getPort() + "]:" + msg);
// 回复客户发送的消息
writer.write("服务器给你的:" + msg + "n");
// 确保把缓冲区的内容发送
writer.flush();
if (QUIT.equals(msg)) {
System.out.println("客户端[" + socket.getPort() + "]已断开连接" );
break;
}
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (serverSocket != null) {
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
客户端的相关代码
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_PORT = 8888;
Socket socket = null;
try {
// 创建socket
socket = new Socket(DEFAULT_SERVER_HOST, DEFAULT_PORT);
// 创建IO流
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// 写入数据
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
// 等待用户输入信息
BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
while (true) {
// 接受用户输入的信息
String input = consoleReader.readLine();
// 发送给服务器
writer.write(input + "n");
writer.flush();
// 读取服务器返回的消息
String msg = reader.readLine();
System.out.println(msg);
if (QUIT.equals(input)) {
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}