在Java中使用Socket进行网络通信可以分为服务端和客户端两部分。
服务端:
创建ServerSocket对象,并指定端口号。
调用ServerSocket的accept()方法接收客户端连接请求,返回一个Socket对象。
使用Socket对象的输入流和输出流进行数据的读取和写入。
通信完成后,关闭Socket对象和ServerSocket对象。
示例代码:
import java.io.*;import java.net.*;public class Server {public static void main(String[] args) {try {// 创建ServerSocket对象,并指定端口号ServerSocket serverSocket = new ServerSocket(8888);// 接收客户端连接请求,返回一个Socket对象Socket socket = serverSocket.accept();// 获取输入流和输出流InputStream is = socket.getInputStream();OutputStream os = socket.getOutputStream();// 读取客户端发送的数据BufferedReader reader = new BufferedReader(new InputStreamReader(is));String data = reader.readLine();System.out.println("Client: " + data);// 向客户端发送数据BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os));writer.write("Hello, client!\n");writer.flush();// 关闭流和Socket对象reader.close();writer.close();is.close();os.close();socket.close();serverSocket.close();} catch (IOException e) {e.printStackTrace();}}}客户端:
创建Socket对象,指定服务端的IP地址和端口号。
使用Socket对象的输入流和输出流进行数据的读取和写入。
通信完成后,关闭Socket对象。
示例代码:
import java.io.*;import java.net.*;public class Client {public static void main(String[] args) {try {// 创建Socket对象,指定服务端的IP地址和端口号Socket socket = new Socket("127.0.0.1", 8888);// 获取输入流和输出流InputStream is = socket.getInputStream();OutputStream os = socket.getOutputStream();// 向服务端发送数据BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os));writer.write("Hello, server!\n");writer.flush();// 读取服务端发送的数据BufferedReader reader = new BufferedReader(new InputStreamReader(is));String data = reader.readLine();System.out.println("Server: " + data);// 关闭流和Socket对象writer.close();reader.close();is.close();os.close();socket.close();} catch (IOException e) {e.printStackTrace();}}}以上代码演示了一个简单的Socket通信过程,在实际应用中可能需要进行异常处理、循环读取数据等操作。