// Java Socket 示例代码
import java.io.*;
import java.net.*;
public class EchoServer {
public static void main(String[] args) throws IOException {
// 创建一个服务器套接字,监听端口 8080
ServerSocket serverSocket = new ServerSocket(8080);
System.out.println("服务器已启动,等待客户端连接...");
try {
while (true) {
// 等待客户端连接
Socket clientSocket = serverSocket.accept();
System.out.println("客户端已连接");
// 获取输入输出流
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String inputLine;
// 读取客户端发送的消息并回显
while ((inputLine = in.readLine()) != null) {
System.out.println("收到消息: " + inputLine);
out.println(inputLine);
if (inputLine.equals("bye")) {
break;
}
}
// 关闭连接
System.out.println("关闭连接");
out.close();
in.close();
clientSocket.close();
}
} finally {
serverSocket.close();
}
}
}
public class EchoClient {
public static void main(String[] args) throws IOException {
// 创建一个客户端套接字,连接到本地的 8080 端口
Socket socket = new Socket("localhost", 8080);
System.out.println("已连接到服务器");
try {
// 获取输入输出流
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String userInput;
// 发送消息给服务器并接收回显
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
System.out.println("服务器回显: " + in.readLine());
if (userInput.equals("bye")) {
break;
}
}
} finally {
socket.close();
}
}
}
EchoServer 类:
ServerSocket 监听 8080 端口。accept() 方法等待客户端连接。BufferedReader 和 PrintWriter 读取和发送数据。EchoClient 类:
Socket 连接到本地的 8080 端口。BufferedReader 和 PrintWriter 与服务器进行通信。这两个类展示了如何使用 Java 的 Socket 和 ServerSocket 实现简单的客户端-服务器通信。
上一篇:java内部类
下一篇:java 注解
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站