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

标签 java sockets tcp

我需要使用基本的消息/响应协议(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/

相关文章:

java - 尝试让java程序连接到Mac上的本地Mysql数据库

php - 从udpsocket发送和获取数据

python - 多处理和套接字。如何等待?

java - 从服务发送数据到远程套接字时出现问题

c - 通过 UDP 实现 ack?

go - 新的 TCP 连接抛出 "use of closed network connection",即使它刚刚打开

sockets - TCP连接会丢包吗?

java - 不知道为什么这没有渲染

Java JDK 问题或其他问题

java - Spring,在同一个URL上发布不同的模型