Java中的网络编程函数:Socket应用实例
发布时间:2023-07-03 13:50:39
Java中的网络编程函数包括Socket和ServerSocket两个类,用于在网络中实现客户端和服务端之间的通信。
Socket类是客户端和服务端的套接字类,用于建立连接、发送和接收数据。以下是一个实例,展示了如何使用Socket类在客户端发送一个请求给服务端,并接收服务端的响应。
客户端代码:
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try {
// 创建socket,指定服务端的IP地址和端口号
Socket socket = new Socket("localhost", 8888);
// 获取输出流,用于向服务端发送数据
OutputStream outputStream = socket.getOutputStream();
PrintWriter printWriter = new PrintWriter(outputStream, true);
printWriter.println("Hello Server!");
// 获取输入流,用于从服务端接收数据
InputStream inputStream = socket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String response = bufferedReader.readLine();
System.out.println("Response from server: " + response);
// 关闭连接
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
服务端代码:
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
// 创建ServerSocket,指定监听的端口号
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("Server started.");
// 监听并接收客户端的连接
Socket socket = serverSocket.accept();
System.out.println("Client connected.");
// 获取输入流,用于接收客户端的数据
InputStream inputStream = socket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String request = bufferedReader.readLine();
System.out.println("Request from client: " + request);
// 获取输出流,用于向客户端发送数据
OutputStream outputStream = socket.getOutputStream();
PrintWriter printWriter = new PrintWriter(outputStream, true);
printWriter.println("Hello Client!");
// 关闭连接
serverSocket.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上代码中,首先客户端创建Socket对象,指定服务端的IP地址和端口号,并通过输出流发送一条消息。服务端创建ServerSocket对象,指定监听的端口号,并通过accept()方法接收客户端的请求,通过输入流接收消息并输出到控制台,然后通过输出流发送一条消息给客户端。最后关闭连接。
这个简单的网络编程实例展示了如何使用Java中的Socket类进行客户端和服务端之间的通信。在实际开发中,可以根据具体需求进行扩展和优化。
