赞
踩
Socket 是实现网络通信的一种机制,它允许在不同主机之间的进程通过网络进行数据交换。下面我将简要介绍如何使用 Socket 实现客户端和服务器间的通信。
创建服务器端 Socket:
服务器端通过创建一个 ServerSocket
对象来监听指定的端口,等待客户端连接。
ServerSocket serverSocket = new ServerSocket(portNumber);
其中 portNumber
是服务器端监听的端口号。
接受客户端连接:
一旦有客户端连接,ServerSocket
就会返回一个 Socket
对象,该对象代表了和客户端的通信通道。
Socket clientSocket = serverSocket.accept();
这一步是阻塞操作,直到有客户端连接进来才会继续执行。
获取输入输出流:
通过 Socket
对象,可以获取输入流和输出流,进行数据的读写操作。
- InputStream inputStream = clientSocket.getInputStream();
- OutputStream outputStream = clientSocket.getOutputStream();
处理客户端请求:
在获得了输入流之后,可以从中读取客户端发送的数据,并根据协议进行相应的处理。
关闭连接:
处理完毕后,记得关闭 Socket
和 ServerSocket
,释放资源。
- clientSocket.close();
- serverSocket.close();
创建客户端 Socket:
客户端通过创建一个 Socket
对象来连接到服务器的指定地址和端口。
Socket socket = new Socket(serverAddress, portNumber);
其中 serverAddress
是服务器的地址,portNumber
是服务器端监听的端口号。
获取输入输出流:
通过 Socket
对象,可以获取输入流和输出流,进行数据的读写操作。
- InputStream inputStream = socket.getInputStream();
- OutputStream outputStream = socket.getOutputStream();
发送请求和接收响应:
使用输出流向服务器发送数据,使用输入流从服务器接收数据。
关闭连接:
处理完毕后,记得关闭 Socket
,释放资源。
socket.close();
- import java.io.*;
- import java.net.*;
-
- public class Server {
- public static void main(String[] args) {
- int portNumber = 8088;
-
- try (ServerSocket serverSocket = new ServerSocket(portNumber)) {
- System.out.println("Server listening on port " + portNumber);
-
- while (true) {
- Socket clientSocket = serverSocket.accept();
- System.out.println("Client connected: " + clientSocket.getInetAddress().getHostAddress());
-
- // 获取输入流
- InputStream inputStream = clientSocket.getInputStream();
- BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
-
- // 读取客户端发送的数据
- String clientMessage = reader.readLine();
- System.out.println("Received from client: " + clientMessage);
-
- // 获取输出流
- OutputStream outputStream = clientSocket.getOutputStream();
- PrintWriter writer = new PrintWriter(outputStream, true);
-
- // 发送响应给客户端
- writer.println("Message received successfully!");
-
- // 关闭连接
- clientSocket.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }

- import java.io.*;
- import java.net.*;
-
- public class Client {
- public static void main(String[] args) {
- String serverAddress = "127.0.0.1";
- int portNumber = 12345;
-
- try (Socket socket = new Socket(serverAddress, portNumber)) {
- System.out.println("Connected to server at " + serverAddress + ":" + portNumber);
-
- // 获取输出流
- OutputStream outputStream = socket.getOutputStream();
- PrintWriter writer = new PrintWriter(outputStream, true);
-
- // 发送数据给服务器
- writer.println("Hello from client!");
-
- // 获取输入流
- InputStream inputStream = socket.getInputStream();
- BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
-
- // 读取服务器响应
- String serverResponse = reader.readLine();
- System.out.println("Server response: " + serverResponse);
-
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。