gpt4 book ai didi

java - 没有 NIO 的全双工 TCP 连接不可能吗?

转载 作者:行者123 更新时间:2023-11-30 06:38:33 24 4
gpt4 key购买 nike

我有两个独立的 java 进程通过单个 TCP 连接进行通信。该协议(protocol)不是像 HTTP 这样的简单同步请求/响应协议(protocol)。双方可以独立发起请求和发送数据。我想使用线程和阻塞套接字来实现它,避免使用 NIO。但这可能吗?

Java 套接字 (java.net.Socket) 不是线程安全的,因此我不允许在一个线程中从套接字读取同时在另一个线程中写入它。 (这是真的吗?)当双方都被阻止写入套接字时,这种限制显然会导致死锁的可能性。

因此,如果不使用 NIO,则无法在 Java 中实现 TCP 之上的某些协议(protocol),或者我是否遗漏了一点?

谢谢。

最佳答案

全双工通信当然是可能的。如果没有 NIO,您将需要一个线程来从套接字中读取数据(并执行请求的处理)。同时,另一个线程可以写入同一个套接字。

如果您能指出一些表明套接字不是全双工的文档,我会尽力澄清。

关于java - 没有 NIO 的全双工 TCP 连接不可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2110651/

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