如何使用Java中的Socket类实现TCP/IP网络编程?
使用Java中的Socket类实现TCP/IP网络编程可以分为客户端和服务器端两个部分。客户端使用Socket类来连接服务器并发送请求,服务器端使用Socket类来接收请求并发送响应。
1. 客户端代码实现:
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
String serverIP = "localhost"; // 服务器IP地址
int serverPort = 8080; // 服务器端口号
try {
// 创建一个新的Socket并连接到服务器
Socket socket = new Socket(serverIP, serverPort);
// 获取Socket的输入/输出流
OutputStream outputStream = socket.getOutputStream();
InputStream inputStream = socket.getInputStream();
// 构造发送给服务器的请求数据
String requestData = "Hello, server!";
byte[] requestBytes = requestData.getBytes("UTF-8");
// 发送请求数据
outputStream.write(requestBytes);
outputStream.flush();
// 接收服务器的响应数据
byte[] responseBytes = new byte[1024];
inputStream.read(responseBytes);
String responseData = new String(responseBytes, "UTF-8");
System.out.println("服务器响应:" + responseData);
// 关闭Socket
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2. 服务器端代码实现:
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
int serverPort = 8080; // 服务器监听的端口号
try {
// 创建一个ServerSocket,并指定监听的端口号
ServerSocket serverSocket = new ServerSocket(serverPort);
while (true) {
// 等待客户端的连接请求
Socket socket = serverSocket.accept();
// 获取Socket的输入/输出流
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
// 接收客户端的请求数据
byte[] requestBytes = new byte[1024];
inputStream.read(requestBytes);
String requestData = new String(requestBytes, "UTF-8");
System.out.println("接收到的请求:" + requestData);
// 构造发送给客户端的响应数据
String responseData = "Hello, client!";
byte[] responseBytes = responseData.getBytes("UTF-8");
// 发送响应数据
outputStream.write(responseBytes);
outputStream.flush();
// 关闭Socket
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上就是使用Java中的Socket类实现TCP/IP网络编程的基本步骤。客户端先创建一个Socket并连接到服务器,然后获取Socket的输入/输出流,发送请求数据并接收服务器的响应数据,最后关闭Socket。服务器端先创建一个ServerSocket并指定监听的端口号,然后进入循环等待客户端的连接请求,接收客户端的请求数据并发送响应数据,最后关闭Socket。
