【发布时间】:2019-09-11 23:14:42
【问题描述】:
我正在尝试为单线程物理产品编写模拟器。它接受一个长期连接,而任何其他连接都会收到一条错误消息(在同一个线程中)。
我知道我可以使用带有两个线程的 java.net:
- 线程 1 - 在端口 XXXX 上启动 ServerSocket 并等待 accept()。为第一个连接创建一个 Socket 和 Thread #2,并为其他连接生成错误消息。
- 线程 2 - 处理 Socket IO。
但是我怎样才能用一个线程做到这一点,所以它的行为更像物理产品(即重复尝试连接会使线程无法处理第一个连接)?
尽量不使用第三方库,但如果这是唯一的选择,可以这样做。
谢谢!
【问题讨论】:
-
在 java 中,您始终可以利用 JNI 在 C 中实现此功能,以供您的 java 程序使用。因为本机这种行为是由 posix 保证的,所以至少它可以在 BSD 和 GNULinux 中工作。 stackoverflow.com/questions/12861956/…
-
你能给我们一些关于这个单线程产品和它运行的操作系统的信息吗?
-
你没有提供足够的信息来说明你到底想要达到什么目标,并不断在 cmets 中添加额外的信息来回答。
-
@Jan 这里不需要 JNI。 Java 已经支持非阻塞
accept()。 -
@daniu 据我所知,我只是重申帖子中已经给出但被受访者忽略的信息。如果您可以让我知道缺少什么,很高兴在原始帖子中添加信息。
标签: java serversocket