Socket类
以下是一个简单的 Java Socket 示例代码,展示了如何创建一个简单的客户端和服务器端,实现基本的通信:
服务器端代码:
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
final int portNumber = 8080;
try (ServerSocket serverSocket = new ServerSocket(portNumber)) {
System.out.println("Server started. Listening on port " + portNumber);
while (true) {
Socket clientSocket = serverSocket.accept();
System.out.println("Client connected: " + clientSocket);
// 为每个客户端连接创建一个新线程来处理
new ServerThread(clientSocket).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class ServerThread extends Thread {
private Socket socket;
public ServerThread(Socket socket) {
this.socket = socket;
}
public void run() {
try (
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))
) {
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println("Received from client: " + inputLine);
out.println("Server received: " + inputLine);
}
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
客户端代码:
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
final String host = "localhost";
final int portNumber = 8080;
try (
Socket socket = new Socket(host, portNumber);
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("Server response: " + in.readLine());
}
} catch (UnknownHostException e) {
System.err.println("Unknown host: " + host);
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to: " + host);
System.exit(1);
}
}
}
这个示例实现了一个简单的基于 Socket 的客户端-服务器端通信。服务器端在本地监听指定端口(8080),客户端连接到该端口并发送消息,服务器端接收到消息后发送回应。