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

发布时间:2025-05-27 06:00:49 作者:小樊
来源:亿速云 阅读:100

在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套接字实现基本的数据传输。

推荐阅读:
  1. 12.4-全栈Java笔记:Java网络编程(二)
  2. 深入理解Java Socket通信

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:OpenHarmony ListView组件如何进行错误处理

下一篇:OpenHarmony ListView组件如何进行样式定制

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》