阅读量:0
在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通信过程,在实际应用中可能需要进行异常处理、循环读取数据等操作。