实现Java Socket字符流
摘要
本文旨在教授一位刚入行的小白如何实现Java Socket字符流。首先,将介绍整个实现过程的流程图,并详细说明每个步骤需要做什么以及所使用的代码。通过本文,小白将了解如何使用Java Socket实现字符流通信。
流程图
st=>start: 开始
op1=>operation: 创建ServerSocket对象,指定端口号
op2=>operation: 调用accept()方法等待客户端连接
op3=>operation: 获取输入流,读取客户端发送的数据
op4=>operation: 获取输出流,发送数据到客户端
e=>end: 结束
st->op1->op2->op3->op4->e
步骤和代码
步骤1:创建ServerSocket对象,指定端口号
首先,我们需要创建一个ServerSocket对象,指定一个端口号,以便客户端可以连接到该端口。
import java.io.IOException;
import java.net.ServerSocket;
public class Server {
public static void main(String[] args) {
int port = 8080; // 指定端口号
try {
ServerSocket serverSocket = new ServerSocket(port); // 创建ServerSocket对象
System.out.println("服务器启动成功,等待客户端连接...");
} catch (IOException e) {
e.printStackTrace();
}
}
}
代码说明:
import java.net.ServerSocket
: 导入ServerSocket类。int port = 8080
: 指定一个端口号,可以根据实际需要进行修改。ServerSocket serverSocket = new ServerSocket(port)
: 创建ServerSocket对象,并指定端口号。
步骤2:调用accept()方法等待客户端连接
在这一步骤中,我们将调用accept()方法等待客户端连接。
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
int port = 8080;
try {
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("服务器启动成功,等待客户端连接...");
Socket clientSocket = serverSocket.accept(); // 等待客户端连接
System.out.println("客户端连接成功,IP地址:" + clientSocket.getInetAddress());
} catch (IOException e) {
e.printStackTrace();
}
}
}
代码说明:
import java.net.Socket
: 导入Socket类。Socket clientSocket = serverSocket.accept()
: 调用accept()方法等待客户端连接,并返回与客户端通信的Socket对象。
步骤3:获取输入流,读取客户端发送的数据
在这一步骤中,我们将获取与客户端通信的Socket对象的输入流,并读取客户端发送的数据。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
int port = 8080;
try {
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("服务器启动成功,等待客户端连接...");
Socket clientSocket = serverSocket.accept();
System.out.println("客户端连接成功,IP地址:" + clientSocket.getInetAddress());
BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); // 获取输入流
String message = reader.readLine(); // 读取客户端发送的数据
System.out.println("客户端发送的数据:" + message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
代码说明:
import java.io.BufferedReader
: 导入BufferedReader类。import java.io.InputStreamReader
: 导入InputStreamReader类。BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()))
: 创建BufferedReader对象,并使用InputStreamReader将Socket对象的输入流包装起来。String message = reader.readLine()
: 调用readLine()方法读取客户端发送的数据。
步骤4:获取输出流,发送数据到客户端
在这一步骤中,我们将获取与客户端通信的Socket对象的输出流,并发送数据到客户端。
import java.io.BufferedReader;
import java.io.IOException;
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) {
int port =