软件介绍:以下是一个简单的 Java TCP 服务端和客户端代码示例,以及如何连接多个客户端:TCP 服务端代码:import java.io.BufferedReade...
以下是一个简单的 Java TCP 服务端和客户端代码示例,以及如何连接多个客户端:
TCP 服务端代码:
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String[] args) { try { // 创建一个 ServerSocket 对象并绑定到指定端口 int port = 8888; ServerSocket serverSocket = new ServerSocket(port); System.out.println("Server started on port " + port); while (true) { // 接受客户端连接请求,创建一个 Socket 对象 Socket clientSocket = serverSocket.accept(); System.out.println("Client connected: " + clientSocket.getInetAddress().getHostAddress()); // 创建输入输出流 BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); // 接收客户端发送的消息并回复 String message = in.readLine(); System.out.println("Received message from client: " + message); out.println("Hello, Client!"); // 关闭输入输出流和套接字 in.close(); out.close(); clientSocket.close(); } } catch (Exception e) { e.printStackTrace(); } } }
在此示例中,我们创建了一个 ServerSocket 对象并使用 accept() 方法等待客户端连接。然后,我们创建一个新的线程来处理每个客户端请求。在各自线程的上下文中,我们使用 BufferedReader 和 PrintWriter 类来读取和写入数据。
TCP 客户端代码:
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class Client { public static void main(String[] args) { try { // 创建一个套接字并连接到指定的主机和端口号 String host = "localhost"; int port = 8888; Socket socket = new Socket(host, port); System.out.println("Connected to server: " + host + ":" + port); // 创建输入输出流 BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter out = new PrintWriter(socket.getOutputStream(), true); // 发送消息并接收回复 String message = "Hello, Server!"; out.println(message); System.out.println("Sent message to server: " + message); String response = in.readLine(); System.out.println("Received message from server: " + response); // 关闭输入输出流和套接字 in.close(); out.close(); socket.close(); } catch (Exception e) { e.printStackTrace(); } } }
在此示例中,我们创建了一个 Socket 对象并使用 getInputStream() 和 getOutputStream() 方法来发送和接收数据。然后,我们使用 PrintWriter 类向服务器发送一条消息,并使用 BufferedReader 类读取从服务器返回的响应。
如何连接多个客户端?
要连接多个客户端,您需要将服务端代码稍加修改,使其能够同时处理多个客户端请求。这可以通过创建一个新的线程来处理每个客户端请求来完成。您可以参考以下示例代码:
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String[] args) { try { // 创建一个 ServerSocket 对象并绑定到指定端口 int port = 8888; ServerSocket serverSocket = new ServerSocket(port); System.out.println("Server started on port " + port); while (true) { // 接受客户端连接请求,创建一个 Socket 对象 Socket clientSocket = serverSocket.accept(); System.out.println("Client connected: " + clientSocket.getInetAddress().getHostAddress()); // 创建输入输出流 BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); // 使用新的线程来处理每个客户端请求 Thread thread = new Thread(new ClientHandler(clientSocket, in, out)); thread.start(); } } catch (Exception e) { e.printStackTrace(); } } } class ClientHandler implements Runnable { private Socket clientSocket;