📅  最后修改于: 2023-12-03 15:02:00.013000             🧑  作者: Mango
Java中的Socket是一种能够实现网络通信的API,用于在客户端和服务器端之间进行数据传输。Socket扮演着端口分配器的角色,让应用程序能够发送和接收TCP/IP网络数据。
Java中的Socket编程需要以下步骤:
下面是一个简单的客户端和服务器端的代码片段:
// 客户端代码
try (
Socket socket = new Socket("127.0.0.1", 5000);
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("echo: " + in.readLine());
}
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to " + hostName);
}
// 服务器端代码
try (
ServerSocket serverSocket = new ServerSocket(5000);
Socket clientSocket = serverSocket.accept();
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
) {
String inputLine;
while ((inputLine = in.readLine()) != null) {
out.println(inputLine);
}
} catch (IOException e) {
System.out.println("Exception caught when trying to listen on port " + portNumber + " or listening for a connection");
System.out.println(e.getMessage());
}
Socket通信模式包括TCP和UDP两种:
TCP是一种可靠的面向连接协议,它提供完整的传输层服务,能够确保数据的可靠传输。使用TCP通信时,要先建立连接,传输完数据后再断开连接。
UDP是一种无连接协议,它不保证数据的可靠传输,但在不要求数据完整传输的情况下,传输速度会更快。使用UDP通信时,每个数据包都是独立的,可以直接发送和接收。
在使用Java中的Socket时,有一些需要注意的事项:
Java中的Socket是一种高效的网络通信API,可以用于客户端和服务器端之间的数据传输。无论是TCP还是UDP,Socket都可以很好地支持。在使用Socket时需要注意一些细节,但只要掌握了基本的使用方法,就能轻松应对各种网络通信需求。