Java Socket仍然是Java中TCP/IP编程的首选?

Seb*_*ebi 5 java sockets tcp

我需要通过TCP/IP与基本消息/响应协议的服务器进行交互(因此对于每个请求,我将收到一个定义的响应).

在JVM生态系统中,我认为Java Socket是15年前使用的工具,但我想知道现在JDK中是否有更合适的东西?例如,对于Java套接字,如果没有收到回答,则仍然需要手动超时请求,这感觉非常古老.

那么JDK或JVM领域有什么新东西吗?

Zby*_*000 6

不,现在有更好的选择,它允许您在没有额外线程的情况下异步实现您的客户端/服务器。

查看来自 nio 的SocketChannel或来自 nio2 的更好的AsynchronousSocketChannel。检查本教程

特别是后一个选项将允许您只启动连接侦听器并注册回调,每当请求新连接、数据到达、数据写入等时都会调用该回调。

还可以考虑查看一些高级解决方案,例如Netty。它将照顾网络核心,将负载平均分配给执行器。此外,它还提供了网络层和处理层的明确​​分离。对于处理层,它将为您提供大量可重用的通用协议编解码器。