温馨提示×

温馨提示×

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

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

java怎么实现socket连接

发布时间:2026-09-13 00:29:32 来源:亿速云 阅读:94 作者:小樊 栏目:编程语言

在 Java 中,Socket 通信通常分为 服务端(ServerSocket) 和 客户端(Socket) 两部分。下面给你一个最基础、可直接运行的示例,以及关键说明。


一、TCP Socket 基本示例

1️⃣ 服务端(Server)

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) {
        try (ServerSocket serverSocket = new ServerSocket(8888)) {
            System.out.println("服务器启动,等待客户端连接...");

            Socket socket = serverSocket.accept(); // 阻塞等待
            System.out.println("客户端已连接:" + socket.getInetAddress());

            BufferedReader in = new BufferedReader(
                    new InputStreamReader(socket.getInputStream()));
            PrintWriter out = new PrintWriter(
                    socket.getOutputStream(), true);

            String msg = in.readLine();
            System.out.println("收到客户端消息:" + msg);

            out.println("你好,客户端!");

            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2️⃣ 客户端(Client)

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

public class Client {
    public static void main(String[] args) {
        try (Socket socket = new Socket("localhost", 8888)) {
            BufferedReader in = new BufferedReader(
                    new InputStreamReader(socket.getInputStream()));
            PrintWriter out = new PrintWriter(
                    socket.getOutputStream(), true);

            out.println("你好,服务器!");

            String response = in.readLine();
            System.out.println("服务器回复:" + response);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

二、运行步骤

  1. 先运行 Server
  2. 再运行 Client
  3. 观察控制台输出

三、关键类说明

类 作用
ServerSocket 服务端监听端口
Socket 客户端连接 / 服务端接收连接
InputStream 接收数据
OutputStream 发送数据
BufferedReader 按行读取文本
PrintWriter 发送文本

四、常见注意点

✅ 端口范围:1024–65535
✅ 异常处理:网络代码必须处理 IOException
✅ 资源关闭:用 try-with-resources 自动关闭
✅ 中文乱码:可指定编码

new InputStreamReader(socket.getInputStream(), "UTF-8")

五、进阶方向(如你需要)

  • 多线程 Socket 服务器
  • NIO(Selector)
  • WebSocket
  • Socket 心跳机制
  • 文件传输
  • Netty 框架

如果你有具体场景(比如聊天室、游戏、设备通信),我可以给你更合适的实现方案。

向AI问一下细节

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

AI
助
手