问题标签 [nio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1007 浏览

java - NIO - 检测关闭的连接

我编写了一个使用 Java NIO API 执行非阻塞 IO 的服务器。我看到一种情况,有时客户端应用程序突然关闭(例如,由于断电)并且连接在服务器端保持打开状态。

一位同事遇到了同样的问题,并说他通过线路使用心跳来检测这种事情,但我希望有一个更简单的方法。有没有其他人遇到过这个问题?

IOException一些附加信息:如果在尝试读/写操作时捕获到一个键,我当前的服务器设计将取消一个键并关闭相应的通道。这种方法似乎在 99% 的时间内都有效;我只见过少数几种连接似乎处于打开状态的情况。

0 投票
4 回答
2068 浏览

scala - Scala 的演员是否有任何非阻塞 IO 开源实现?

我有相当大的文件需要处理(500Meg+ zip 文件)。

Scala 的 actor 是否有任何非阻塞 IO 开源实现?

0 投票
3 回答
1834 浏览

java - java NIO Selector.select() 阻塞的线程应该被认为是等待还是运行

selectorObj.select()方法状态 的文档

此方法执行阻塞选择操作。它仅在至少选择一个通道、调用此选择器的唤醒方法或当前线程被中断(以先到者为准)后才返回。

我了解文档选择方法阻塞的线程,不应该等待吗?当我运行探查器时,我看到线程处于运行模式而不是等待状态。

虽然,我接受这一点,但没有提到线程应该处于等待状态,但我的假设是,直到信号调度程序线程提供一些关于在选择器注册的通道上的任何活动的输入;线程应该处于等待状态。

请为我提供一些帮助,说明为什么我的假设可能是错误的。

0 投票
4 回答
10602 浏览

java - 如何将所有控制台输出重定向到具有正确编码的 Swing JTextArea/JTextPane?

我一直在尝试将 System.out PrintStream 重定向到 JTextPane。这工作正常,除了特殊语言环境字符的编码。我找到了很多关于它的文档(参见例如mindprod 编码页面),但我仍在与它作斗争。StackOverFlow 中发布了类似的问题,但就我所见而言,编码并没有得到解决。

第一个解决方案:

第二种解决方案应该使用 java.nio。我不明白如何使用字符集。

两种解决方案都没有奏效。任何想法?

在此先感谢,jgran

0 投票
3 回答
538 浏览

java - Java:可以在以下之间进行泛化:流、读取器、字符缓冲区、字符串构建器,...?

背景故事:

XML 有这些 Source 和 Result 接口。这些是 Java 中不同 XML 技术之间的适配器。这些类的实例代表 DOM、SAX、JAXB、XML 流、XML 事件(甚至更多?)。

问题:

那么,普通的旧字符串有可比性吗?以下之间的一些概括?

  • [Input|Output]Stream
  • Reader|Writer
  • StringBuffer
  • StringBuilder
  • CharBuffer(来自蔚来)
  • File (或者Path对于我们中间的 JDK7 粉丝)
  • (最后)CharSequence

也许有一些提供此类功能的通用 API(Apache commons 的东西......?)?

澄清示例:

经典方法的用法:

接口需要能够从(到)所有可能的来源(结果)读取(写入)字符:

使用预期方法:

通过一些想象CharacterSourceCharacterResult接口,现在可以使用一种方法进行读/写:

预期的方法实施,可能的层次结构:

如果不存在这样的功能,我应该编写自己的迷你 API 吗? (对于更大的 API,我目前正在参与)

这是怎么回事

0 投票
3 回答
1232 浏览

java - Java NIO UDP - 尝试注册时选择器挂起

当您尝试注册 DatagramChannel 时,市场行将永远挂起。

有谁知道为什么?

0 投票
7 回答
117042 浏览

java - Java NIO FileChannel 与 FileOutputstream 性能/实用性

我试图弄清楚当我们使用 nioFileChannel与正常FileInputStream/FileOuputStream读取和写入文件到文件系统时,性能(或优势)是否有任何差异。我观察到,在我的机器上,两者的性能都一样,而且FileChannel速度也慢了很多倍。我可以知道比较这两种方法的更多细节吗?这是我使用的代码,我正在测试的文件是350MB. 如果我不考虑随机访问或其他此类高级功能,那么将基于 NIO 的类用于文件 I/O 是一个不错的选择吗?

0 投票
1 回答
1432 浏览

scala - 在 Scala 中处理文件时出现 java.nio.BufferUnderflowException

在处理4MB日志文件时,我遇到了与此人类似的问题。实际上我正在同时处理多个文件,但由于我不断收到这个异常,我决定只测试一个文件:

我总是得到的是它会在 itr = 75703 处失败,而我的输出文件将始终为 64KB(精确为 65536 字节)。无论我将 temp.reset 或 System.gc 放在哪里,所有实验的结果都是一样的。

这个问题似乎依赖于一些内存分配,但我找不到关于这个问题的任何有用信息。关于如何解决这个问题的任何想法?

非常感谢您的所有帮助

编辑:实际上我想将它作为二进制文件处理,所以这种技术不是一个好的解决方案,很多人建议我改用 BufferedInputStream。

0 投票
4 回答
884 浏览

java - 从 Java 服务器到多个 C++ 客户端的高效文件传输?

我需要通过 Internet 将文件从 Java 服务器快速传输到 C++ 客户端,而许多客户端通常需要相同的文件。我正在看 Java 中的 transferTo() ,这听起来像是一个经过适当优化的函数来发送文件。但是,我不确定何时使用 transferTo() 如何在 C++ 中最好地接收它(即它只是一个原始数据传输,我如何确定文件何时在客户端结束,等等)。我需要它才能在 Windows 和 Linux 上工作。此外,除了 transferTo() 之外,还有什么方法可以提高效率,尤其是利用许多客户端通常需要相同文件的事实?我不确定如何说多播等。此外,我使用的是应用程序级安全性而不是 VPN,并且在 Java 服务器上,使用 AES 加密并使用 MAC 数字签名,所以我也在寻找一个跨平台库推荐,以最小的痛苦处理 C++ 端的加密。我非常精通 C++,但以前没有网络编程经验,所以请考虑比任何建议。谢谢。

0 投票
1 回答
6152 浏览

java - java nio 选择器唤醒

selector.wakeup();请指出/提供两个线程之间方法的工作示例。

我试图创建一个简单的程序,其中一个线程正在等待 selector.select() 方法。第二个线程创建一些套接字并尝试向选择器注册;第一个线程在其上被阻塞。

因此我需要使用选择器的wakeup方法,但不知何故第一个线程没有退出阻塞模式。

唤醒方法的 javadoc 指出:

如果另一个线程当前在调用 Selector.select() 或 Selector.select(long) 方法时被阻塞,则该调用将立即返回。

PS几乎没有其他解决方法;其中之一是 select(timeout) 但我试图找出错误在哪里。

伪代码:

第一个线程:

第二个线程: