Java Socket 通讯 Demo 指南
作为一名初学者,了解和实现 Java 的 Socket 通讯是一个重要的技能。Socket 通讯允许两台计算机之间进行数据交换。本文将通过一个简单的示例教会你如何实现一个基本的 Java Socket 通讯 Demo。
1. 流程概述
实现 Java Socket 通讯的基本步骤可以总结如下:
步骤 | 描述 |
---|---|
1 | 创建服务器端 |
2 | 创建客户端 |
3 | 服务器和客户端进行连接 |
4 | 交换数据 |
5 | 关闭连接 |
2. 每一步的实现
步骤1:创建服务器端
首先,我们需要创建一个服务器端。它将监听客户端的连接请求。
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
// 创建一个服务器套接字,端口为12345
ServerSocket serverSocket = new ServerSocket(12345);
System.out.println("服务器正在等待客户端连接...");
// 接收连接
Socket socket = serverSocket.accept();
System.out.println("客户端连接成功!");
// 数据输入输出流
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
// 读取客户端发送的消息
String message = in.readLine();
System.out.println("收到客户端消息: " + message);
// 发送回执
out.println("消息已接收!");
// 关闭连接
in.close();
out.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
步骤2:创建客户端
接下来,我们需要创建一个客户端。它用来连接到服务器并向其发送数据。
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try {
// 创建与服务器的 Socket 连接,指定服务器地址和端口
Socket socket = new Socket("localhost", 12345);
System.out.println("成功连接到服务器!");
// 数据输入输出流
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// 向服务器发送消息
out.println("你好,服务器!");
// 读取服务器的回执消息
String response = in.readLine();
System.out.println("服务器回复: " + response);
// 关闭连接
out.close();
in.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
步骤3:连接服务器
在服务器端代码中,调用 serverSocket.accept()
方法来等待客户端连接。一旦有客户端请求,它就会接受连接并返回一个 Socket
对象用于后续的数据交流。
步骤4:交换数据
在上面的代码中,服务器和客户端分别使用输入流和输出流进行数据的读取与发送。BufferedReader
用于从输入流中读取字符串,而 PrintWriter
则是用于向输出流发送字符串。
步骤5:关闭连接
使用后,务必关闭输入输出流以及 Socket
和 ServerSocket
连接,以便释放资源。
3. 关系图
为了更加清楚地理解 Socket 通讯的结构,我们可以使用 ER 图来表示整个过程。
erDiagram
CLIENT {
String message
String response
}
SERVER {
String receivedMessage
String replyMessage
}
CLIENT ||--o| SERVER : connect
CLIENT ||--o| SERVER : send
SERVER ||--o| CLIENT : receive
SERVER ||--o| CLIENT : reply
结论
通过以上步骤,我们已经完成了 Java Socket 通讯的基本 Demo。这一过程涉及了服务器端和客户端的创建、连接、数据交换及关闭连接等关键步骤。对于初学者来说,理解这些基本概念将为后续深入学习网络编程打下坚实基础。
祝你在 Java Socket 网络编程的学习之旅中取得好成绩!如果有任何进一步的问题,请随时询问。