验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

Java Socket套接字如何实现数据传输

阅读:63 2025-08-19 00:00:00 来源:乙速云 作者:代码code

Java Socket套接字如何实现数据传输

在Java中,使用Socket套接字进行数据传输主要涉及到两个类:java.net.Socket(用于客户端)和java.net.ServerSocket(用于服务器端)。以下是使用这两个类实现数据传输的基本步骤:

服务器端

  1. 创建ServerSocket对象

    ServerSocket serverSocket = new ServerSocket(port);
    

    其中port是服务器监听的端口号。

  2. 接受客户端连接

    Socket clientSocket = serverSocket.accept();
    

    这行代码会阻塞,直到有客户端连接到服务器。

  3. 获取输入输出流

    InputStream input = clientSocket.getInputStream();
    OutputStream output = clientSocket.getOutputStream();
    
  4. 读取和写入数据

    // 读取客户端发送的数据
    BufferedReader reader = new BufferedReader(new InputStreamReader(input));
    String receivedData = reader.readLine();
    
    // 向客户端发送数据
    PrintWriter writer = new PrintWriter(output, true);
    writer.println("Hello, Client!");
    
  5. 关闭资源

    reader.close();
    writer.close();
    clientSocket.close();
    serverSocket.close();
    

客户端

  1. 创建Socket对象

    Socket socket = new Socket(serverAddress, port);
    

    其中serverAddress是服务器的IP地址或主机名,port是服务器监听的端口号。

  2. 获取输入输出流

    InputStream input = socket.getInputStream();
    OutputStream output = socket.getOutputStream();
    
  3. 读取和写入数据

    // 向服务器发送数据
    PrintWriter writer = new PrintWriter(output, true);
    writer.println("Hello, Server!");
    
    // 读取服务器发送的数据
    BufferedReader reader = new BufferedReader(new InputStreamReader(input));
    String receivedData = reader.readLine();
    System.out.println(receivedData);
    
  4. 关闭资源

    reader.close();
    writer.close();
    socket.close();
    

示例代码

服务器端代码

import java.io.*;
import java.net.*;

public class Server {
    public static void main(String[] args) {
        int port = 12345;
        try (ServerSocket serverSocket = new ServerSocket(port)) {
            System.out.println("Server is listening on port " + port);

            while (true) {
                try (Socket clientSocket = serverSocket.accept()) {
                    System.out.println("New client connected");

                    InputStream input = clientSocket.getInputStream();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(input));

                    OutputStream output = clientSocket.getOutputStream();
                    PrintWriter writer = new PrintWriter(output, true);

                    String receivedData = reader.readLine();
                    System.out.println("Received from client: " + receivedData);

                    writer.println("Hello, Client!");
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

客户端代码

import java.io.*;
import java.net.*;

public class Client {
    public static void main(String[] args) {
        String serverAddress = "localhost";
        int port = 12345;

        try (Socket socket = new Socket(serverAddress, port)) {
            OutputStream output = socket.getOutputStream();
            PrintWriter writer = new PrintWriter(output, true);

            writer.println("Hello, Server!");

            InputStream input = socket.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(input));

            String receivedData = reader.readLine();
            System.out.println("Received from server: " + receivedData);
        } catch (UnknownHostException e) {
            System.err.println("Don't know about host " + serverAddress);
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

通过上述步骤和示例代码,你可以在Java中使用Socket套接字实现基本的数据传输。

分享到:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
上一篇:
相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>