温馨提示×

温馨提示×

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

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

java Socket套接字是什么

发布时间:2026-10-10 13:47:01 来源:亿速云 阅读:95 作者:小樊 栏目:编程语言

Java 中的 Socket(套接字) 是 Java 提供的一种用于网络通信的编程接口,位于 java.net 包中。它封装了底层操作系统的 TCP/IP 或 UDP 通信机制,让 Java 程序可以方便地进行网络数据交换。


一、什么是 Socket?

Socket(套接字) 是网络上两个程序之间进行双向通信的端点。

可以简单理解为:

网络中的“电话接口”——一端拨号(客户端),一端接听(服务器),建立连接后就可以互相说话(传数据)。


二、Socket 的分类(Java 中常见)

1️⃣ 基于 TCP 的 Socket(可靠、面向连接)

  • Socket:客户端套接字
  • ServerSocket:服务器端套接字

✅ 特点:

  • 连接可靠
  • 数据不丢失、不重复
  • 适合文件传输、聊天、HTTP 等

2️⃣ 基于 UDP 的 Socket(不可靠、无连接)

  • DatagramSocket
  • DatagramPacket

✅ 特点:

  • 速度快
  • 可能丢包
  • 适合视频、语音、广播

三、TCP Socket 通信示例

1️⃣ 服务器端(Server)

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

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

        Socket socket = serverSocket.accept(); // 阻塞等待
        BufferedReader in = new BufferedReader(
                new InputStreamReader(socket.getInputStream()));

        String msg = in.readLine();
        System.out.println("客户端说:" + msg);

        socket.close();
        serverSocket.close();
    }
}

2️⃣ 客户端(Client)

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

public class Client {
    public static void main(String[] args) throws Exception {
        Socket socket = new Socket("localhost", 8888);

        PrintWriter out = new PrintWriter(
                socket.getOutputStream(), true);
        out.println("你好,服务器!");

        socket.close();
    }
}

四、Socket 通信的基本流程(TCP)

服务器端:

  1. 创建 ServerSocket
  2. 调用 accept() 等待连接
  3. 通过输入输出流通信
  4. 关闭 socket

客户端:

  1. 创建 Socket(指定 IP + 端口)
  2. 获取流进行通信
  3. 关闭 socket

五、Socket 常用方法

socket.getInputStream();   // 输入流
socket.getOutputStream();  // 输出流
socket.getPort();          // 端口
socket.getInetAddress();   // IP 地址
socket.close();            // 关闭

六、Socket 的应用场景

  • 聊天程序(QQ、微信底层)
  • 文件传输
  • 远程控制
  • 游戏联机
  • 自定义网络协议

七、一句话总结

Java Socket 就是 Java 提供的一套网络通信 API,用来让两台计算机通过网络“对话”。

如果你愿意,我也可以:

  • 画一张 Socket 通信流程图
  • 讲 Socket 和多线程结合
  • 对比 Socket 和 HTTP
  • 用 NIO Socket 写高性能通信

你想深入哪一块?

向AI问一下细节

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

AI
助
手