JAVA 中 Socket 和 WebSocket 区别

这篇具有很好参考价值的文章主要介绍了JAVA 中 Socket 和 WebSocket 区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

区别:

Socket: Socket是位于java.net包下的一个类,是 Java 提供的用于在客户端和服务器之间建立网络通信的底层套接字接口,用于传输层的网络通信。

WebSocket: WebSocket 是一种基于 TCP 协议的通信协议,建立在 Socket 的基础上,提供了用于实时双向通信的高级接口。

实现方法:

Socket: 使用 Socket 类可以创建 TCP/IP 连接并进行数据传输。客户端使用 Socket 和服务器建立连接,并通过输入流和输出流进行数据的发送和接收。

WebSocket: 使用 WebSocket 协议需要对服务器进行额外的配置。客户端与服务器通过 HTTP 协议进行握手,建立连接后,可以通过 WebSocket 的 API 进行实时的双向通信。

Socket 示例:

客户端:

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;

public class SocketClient {
    public static void main(String[] args) {
        try {
            Socket socket = new Socket("localhost", 8080);
            OutputStream outputStream = socket.getOutputStream();
            outputStream.write("Hello, Server!".getBytes());
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

服务器:

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class SocketServer {
    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(8080);
            Socket socket = serverSocket.accept();
            InputStream inputStream = socket.getInputStream();
            byte[] buffer = new byte[4096];
            int bytesRead = inputStream.read(buffer);
            String message = new String(buffer, 0, bytesRead);
            System.out.println("Received message from client: " + message);
            socket.close();
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

WebSocket 示例:

import javax.websocket.*;
import java.net.URI;

@ClientEndpoint
public class WebSocketClient {
    @OnMessage
    public void onMessage(String message) {
        System.out.println("Received message from server: " + message);
    }

    public static void main(String[] args) {
        WebSocketContainer container = ContainerProvider.getWebSocketContainer();
        try {
            Session session = container.connectToServer(WebSocketClient.class, new URI("ws://localhost:8080/websocket"));
            session.getBasicRemote().sendText("Hello, Server!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

@ServerEndpoint("/websocket")
public class WebSocketServer {
    @OnMessage
    public String onMessage(String message) {
        System.out.println("Received message from client: " + message);
        return "Server received your message: " + message;
    }
}

上面注解是 Java WebSocket API(JSR 356)中提供的一些标准注解,用于在 Java 中创建 WebSocket 客户端和服务器端的端点。它们的具体含义如下:

@ClientEndpoint: @ClientEndpoint 是一个用于标注 WebSocket 客户端端点的注解。通过在一个类上使用 @ClientEndpoint 注解,将该类标记为 WebSocket 客户端的端点,表示该类将处理与服务器的连接和消息交互。可以在该类中定义处理消息的方法,如 @OnMessage。

@OnMessage: @OnMessage 是一个用于标注 WebSocket 终端的注解,指示一个方法将用于处理接收到的 WebSocket 消息。当收到消息时,WebSocket 运行时将调用带有 @OnMessage 注解的方法,并将接收到的消息作为参数传递给该方法。该方法可以根据需要进行消息的处理和响应。

@ServerEndpoint(“/websocket”): @ServerEndpoint 是一个用于标注 WebSocket 服务器端终端的注解。通过在一个类上使用 @ServerEndpoint 注解,并指定一个 URI 路径参数,将该类标记为 WebSocket 服务器端的端点。当客户端连接到指定的 URI 时,WebSocket 运行时将创建一个新的该类的实例,并将其用作与客户端的通信终端。类中可以定义多个方法,并使用 @OnMessage 注解进行消息的处理。文章来源地址https://www.toymoban.com/news/detail-737013.html

到了这里,关于JAVA 中 Socket 和 WebSocket 区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 什么是 WebSocket?Java 中如何实现 WebSocket?

    WebSocket 是一种新型的网络协议,它允许客户端和服务器之间进行双向通信,可以实现实时数据交互。WebSocket 协议是基于 HTTP 协议的,使用标准的 TCP 连接,可以在客户端和服务器之间建立一条持久化的连接,而不需要像 HTTP 协议那样每次请求都需要重新建立连接。 WebSocket 协

    2024年02月16日
    浏览(46)
  • SpringBoot整合Websocket(Java websocket怎么使用)

    WebSocket 是一种基于 TCP 协议的全双工通信协议,可以在浏览器和服务器之间建立 实时、双向的数据通信 。可以用于在线聊天、在线游戏、实时数据展示等场景。与传统的 HTTP 协议不同,WebSocket 可以保持 长连接 ,实时传输数据,避免了频繁的 HTTP 请求和响应,节省了网络带

    2024年02月10日
    浏览(40)
  • Java Websocket 01: 原生模式 Websocket 基础通信

    Java Websocket 01: 原生模式 Websocket 基础通信 Java Websocket 02: 原生模式通过 Websocket 传输文件 原生模式下 服务端通过 @ServerEndpoint 实现其对应的 @OnOpen, @OnClose, @OnMessage, @OnError 方法 客户端创建 WebSocketClient 实现对应的 onOpen(), onClose(), onMessage(), onError() 完整示例代码 https://github.com/

    2024年02月09日
    浏览(37)
  • c# websocket client java websocket server

    实现功能:c# websocket 客户端 连接 java websocket 服务端 一,c# websocket 客户端  nuget websocketsharp-netstandard Program.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using WebSocketSharp;  //websocketsharp-netstandard namespace websocketCli

    2024年02月16日
    浏览(31)
  • Java Websocket 02: 原生模式通过 Websocket 传输文件

    Java Websocket 01: 原生模式 Websocket 基础通信 Java Websocket 02: 原生模式通过 Websocket 传输文件 关于 Websocket 传输的消息类型, 允许的参数包括以下三类 以下类型之一, 同时只能出现一个 文本类型 (text messages) 的消息: String, Java primitive, 阻塞的 Stream Reader, 带text decoder(Decoder.Text or Deco

    2024年02月09日
    浏览(52)
  • 两种实现WebSocket的方式,基于Java实现WebSocket。

    首先我们声明WebSocker方便打字为ws。 WebSocker ws = new WebSocket(); 或者说启用spring框架,因为spring已经整合了ws。 配置类:把spring中的ServerEndpointEx porter对象注入进来 用iava注解来 @ServerEndpoint          监听连接、 @OnOpen          连接成功、 @OnClose        连接关闭、 @

    2024年01月21日
    浏览(43)
  • 【Java使用WebSocket步骤】

    在项目中需要用到与前端进行双向通信,遂选择了Java API for WebSocket(JSR 356): WebSocket是一种在Web浏览器和服务器之间进行双向通信的技术,可以使得浏览器与服务器之间建立长连接,并且实现实时数据传输。在Java中,可以使用Java API for WebSocket(JSR 356)实现WebSocket通信。

    2023年04月18日
    浏览(38)
  • java 使用 websocket

     1.导入websocket依赖 2.代码 3.配置

    2024年02月11日
    浏览(36)
  • Java websocket 使用

    WebSocket 是一种基于 TCP 协议的全双工通信协议,可以在浏览器和服务器之间建立实时、双向的数据通信。在 Java 中,我们可以使用 Java API for WebSocket(JSR 356)来实现 WebSocket。 WebSocket 的作用是在 Web 应用程序中实现实时、双向的数据通信,可以用于在线聊天、在线游戏、实时

    2024年02月14日
    浏览(30)
  • websocket实现通讯——Java

    参考博客0 1)通知功能: 2)数据收集: 3)加密 认证: 4)反向控制钩子: 1、websocket则允许我们在一条ws连接上同时并发多个请求,即在A请求发出后A响应还未到达,就可以继续发出B请求。由于TCP的慢启动特性(新连接速度上来是需要时间的),以及连接本身的握手损耗,

    2024年02月15日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包