gpt4 book ai didi

java - 套接字与常见网络 API 的关系

转载 作者:行者123 更新时间:2023-12-03 11:52:33 25 4
gpt4 key购买 nike

今天早上我问了一个与套接字相关的问题,但这是一个不同的野兽,所以我决定完全单独发表一篇文章。

我现在对什么是套接字以及它们的用途有了一个很好的了解。我试图了解它们与 Java NIO、Java RMI 以及 Netty 或 MINA 等所谓的网络 API 的关系。

  • 套接字是所有基于 Java 的网络的基础,NIO 是基于 Java 的网络的基础吗(即,它是为 Netty 或 MINA 等高级框架提供套接字结构的 API)吗?如果不是,那么 Java 网络功能的基础是什么?
  • 可以使用套接字(据我了解,或网络层构造)来发送(按字节)符合更高协议(protocol)(如 TCP 或 UDP、HTTP、FTP 等)的消息吗?如果是这样,我想开发团队可能会制作自己的 HttpProtocol 库或 SSLProtocol 库,是吗?
  • 我的理解是,NIO 是所有 Java 网络的基础,RMI、Netty、MINA 等都将 NIO 框架扩展为自己的实现。它是否正确?如果不是,这些框架如何相互关联?

  • 再次感谢你的帮助!

    最佳答案

    Are sockets the basis of all Java-based networking,



    对于 IP 协议(protocol),是的。可能有一些特殊的库,例如 JavaComm用于串口通信, JAIN适用于不基于套接字的各种电信协议(protocol)

    and is NIO the foundation of Java-based networking



    不是真的,套接字是。见上一个答案。 NIO 构建并增强了套接字,以及其他东西。最重要的部分可能是 NIO 允许您在单个线程中监听多个套接字上的事件并执行非阻塞 IO。 Netty 和 Mina 充分利用了 NIO api。

    NIO 代表 New I/O,是 Java 1.4 中引入的用于执行 IO 的新 API。不过,它除了套接字 IO 还做了很多其他的事情。可以说,NIO 将允许您以更高的复杂性为代价更有效地执行套接字 IO。

    Can one use sockets (which as I understand it, or network-layer constructs), to send (byte-wise) messages compliant with higher protocols, such as TCP or UDP,



    不会。Sockets 让您可以访问诸如 TCP 或 UDP 之类的传输协议(protocol)(实际上,对于 Java,它只有 TCP 和 UDP, future 可能还有 SCTP)。您可以构建在 TCP/UDP 之上工作的东西,而不是自己实现 TCP/UDP(除非您想在 TCP 或 UDP 之上实现 IP 堆栈 - 这是几个 VPN 或 Tunelling 协议(protocol)所做的)

    HTTP, FTP, etc?



    是的,这些通常在 TCP 之上工作,您可以通过使用 java 中的套接字来实现 HTTP、FTP 和其他在 TCP/UDP 之上运行的协议(protocol)——这就是套接字的用途。

    关于java - 套接字与常见网络 API 的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4784873/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com