我需要使用基本的消息/响应协议(protocol)通过 TCP/IP 与服务器进行交互(因此对于每个请求我都将收到定义的响应)。
在JVM生态中,我觉得Java Socket是15年前的工具,但我想知道现在的JDK有没有更适合的工具?例如,对于 Java 套接字,如果没有收到响应,仍然需要手动使请求超时,这感觉真的很老套。
那么 JDK 或 JVM 世界中有什么新东西吗?
最佳答案
不,现在有更好的选择,可以让您异步实现客户端/服务器,而无需额外的线程。
看SocketChannel来自 nio 甚至更好 AsynchronousSocketChannel来自 nio2。检查这个tutorial
特别是后一个选项将允许您只启动连接监听器并注册回调,每当请求新连接、数据到达、数据写入等时都会调用回调。
还可以考虑查看一些高级解决方案,例如 Netty .它将负责网络核心,将负载平均分配给执行者。此外,它提供了网络层和处理层的明确分离。对于处理层,它将为您提供大量可重用的通用协议(protocol)编解码器。
关于Java Socket 仍然是 Java 中 TCP/IP 编程的首选?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35431960/