Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-在不关闭的情况下中断I/O_Java_Io_Nio_Interrupt - Fatal编程技术网

Java-在不关闭的情况下中断I/O

Java-在不关闭的情况下中断I/O,java,io,nio,interrupt,Java,Io,Nio,Interrupt,我正在用Java编写一个国际象棋程序。GUI应该能够与支持的象棋引擎通信。但是我在协调协议和Java的I/O功能方面遇到了一些困难 由于协议版本2之前的引擎不发送“功能”,xboard使用超时机制:当它第一次启动引擎时,它发送“xboard”和“protover N”,然后在发送任何其他命令之前监听功能命令两秒钟 Java中断I/O操作的功能似乎是有限的。我能找到的唯一选择是NIO的中断频道,它在中断时自动关闭 我不希望流在超时时关闭——我只想中断读取。有人知道解决办法吗?我想你可能想得太多了。

我正在用Java编写一个国际象棋程序。GUI应该能够与支持的象棋引擎通信。但是我在协调协议和Java的I/O功能方面遇到了一些困难

由于协议版本2之前的引擎不发送“功能”,xboard使用超时机制:当它第一次启动引擎时,它发送“xboard”和“protover N”,然后在发送任何其他命令之前监听功能命令两秒钟

Java中断I/O操作的功能似乎是有限的。我能找到的唯一选择是NIO的中断频道,它在中断时自动关闭


我不希望流在超时时关闭——我只想中断读取。有人知道解决办法吗?

我想你可能想得太多了。您不需要在2秒钟后中止
read()
调用,只需要您的支持逻辑来理解,在2秒钟后,它不应该期望收到任何“功能”命令。然后,您的实现可以编写下一个命令,
read()
将从对该命令的响应中返回字节


不管怎样,我都会这样做,通过使用以字节为单位读取的通用代码,并将它们进一步向上传递,从而完成特定于上下文的处理。然后您不需要中断读取,上游代码只需要理解它最终返回的数据可能是“feature”命令,也可能不是。

我不清楚您需要做什么。您所引用的是电路板的超时行为。你不必实现它,它是在板上完成的,板是对等的,即另一端