问题标签 [nio2]

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 回答
1482 浏览

java - Java7异步NIO2服务器上的连接拒绝

我已经使用 java 7 nio2 编写了一个异步套接字服务器。

这是服务器的狙击手。

这是尝试连接的客户端代码片段...

我有一个测试可以触发客户。

它对大约 100 个客户非常有效。在大约 140+ 时,我在客户端中收到大量异常 - 当它尝试连接时。异常是:java.util.concurrent.ExecutionException: java.io.IOException: 远程计算机拒绝网络连接。

我的测试是在一台运行 Windows 7 的笔记本电脑上进行的。当它爆炸时,我检查 TCP 连接,那里大约有 500 到 600 个连接——没关系。因为我有可以处理 4,000 个 TCP 连接的类似 JDK 1.0 java.net 套接字程序。

在服务器中没有例外或任何狡猾的东西。

所以我不知道这里可能出了什么问题。有任何想法吗?

0 投票
4 回答
7123 浏览

java - 如何在循环或递归中使用 AsynchronousSocketChannel#read?

我找到了一个相关的问题,但它并不是特别有用,因为它没有提供完整的示例。

问题:如何使用AsynchronousSocketChannel使用固定大小的缓冲区读取未知长度的数据

第一次尝试(读取一次):

我需要进行哪些更改才能在(即到达流的末尾)时干净地实现连续读取缓冲区?bytesRead != -1

0 投票
1 回答
248 浏览

java - 如何从 AsynchronousSocketChannel 反序列化 Serializable 对象

要执行反序列化,我需要一个ObjectInputStream. 但是我们只使用AsynchronousSocketChannel,它不能转换为ObjectInputStream。我能做些什么?

0 投票
1 回答
319 浏览

java - java 7 nio 2程序的意外输出

我正在尝试来自Pro Java 7 NIO.2 第 118 页的小程序

代码是:

但是,当我更改global.properties文件夹中存在的(或任何文件)中的一行时,C:\\Java我得到的输出为 -

为什么会引发 2 次事件?
Java中是否有任何服务可以检测文件中精确修改的行/行?

JDK:jdk1.7.0_09
IDE:Eclipse Java EE IDE 版本:Juno 发布
平台:Windows 7

0 投票
2 回答
538 浏览

java - Windows 上 nio.2 AsynchronousServerSocketChannel.accept() 的正确行为?

以下测试程序执行简单的绑定/接受,然后关闭通道组。

我希望程序打印出生成的 ShutdownChannelGroupException,但它从不调用完成处理程序并在线程池中引发异常。

有人可以阐明发生了什么吗?当他们说 shutdownNow() 具有以下行为时,我是否误解了文档:“当所有主动执行的完成处理程序都运行完成并且所有资源都已释放时,该组终止”。

回调是不是“活动”还没有因此被丢弃?

0 投票
1 回答
2975 浏览

java - Java NIO2 AIO - TCP 聊天服务器

我正在玩 Java NIO2,我正在尝试编写基于 AsynchronousServerSocketChannel 的 TCP 聊天服务器。

对一个简单的 ECHO-Server 进行编程是没有问题的,并且可以完美地工作。现在我正在尝试接受许多客户端并向所有连接的客户端广播传入消息,但我遇到了问题。

因为它有点长我把代码贴在了pastbin

到目前为止,我能够广播一条消息,之后出现问题,过了一会儿我收到以下错误:

线程“pool-1-thread-13”中的异常 java.nio.channels.WritePendingException

0 投票
1 回答
168 浏览

linux - 如果绑定到 localhost/127.0.0.1 而不是外部,OpenJDK 7 AsynchronousServerSocketChannel 仅接受 localhost

在 openSUSE 12.2 (x86_64) 上,AppArmor没有运行,防火墙被禁用

如果使用 AsynchronousServerSocketChannel 的服务器正在侦听连接并且我指定 localhost 或 127.0.0.1,那么它只接受来自 localhost 的连接,如果我尝试从另一台机器连接它,它会拒绝它。怎么回事?!如果我将其实际机器的主机名或 IP 地址而不是 localhost 或 127.0.0.1 放入 Java 服务器,那么它确实接受来自其他地方的连接。双WTF?!

当我使用老式同步服务器时没有这样的问题——当我将它绑定到本地主机端口时,它接受来自本地机器和外部机器的连接。此外,当我都设置为绑定到 localhost 时,我注意到同步和 NIO2 之间的以下差异:

这对我来说是一个大问题,因为我计划将此服务器部署到多台机器上,并且必须更改每台机器上的配置文件以添加实际的主机名/IP 而不是拥有 localhost,这将是一个很大的痛苦。如果我指定 localhost 应该有什么解决方法,它会起作用吗?

0 投票
2 回答
366 浏览

java - 查询 FileSystems.getPath(URI)

在 Java 7 源代码中,Paths类有一个方法——get(URI)。

在 get(URI) 中存在:

FileSystems.getDefault()返回对默认文件系统的引用。但是,根据文档,.provider()关闭文件系统然后.getPath(uri)被调用。有人可以向我解释发生了什么吗?为什么文件系统似乎关闭然后返回?

如果有人能给我详细介绍该返回声明中发生的事情,那就太好了。

0 投票
2 回答
1451 浏览

ejb-3.1 - EJB 3.1 和 NIO2:监控文件系统

我想我们大多数人都同意,NIO2 是一个很好的利用方式。假设您想监视文件系统的某些部分以获取传入的 xml - 文件,现在这是一项简单的任务。但是,如果我想将这些东西集成到现有的 Java EE 应用程序中,这样我就不必启动另一个服务(应用程序服务器监视文件系统的服务)怎么办?所以我有重量级的应用服务器,包含所有 EJB 3.1 的东西和某种监视文件系统的服务,并在文件出现后采取适当的行动。有趣的是,适当的操作是创建一条消息并通过 JMS 发送它,将两者集成到应用程序服务器中可能会很好。

我尝试了@Startup,但部署冻结了(我知道我不应该在那里使用 I/O,只是尝试一下)。无论如何......有什么建议吗?

0 投票
2 回答
2467 浏览

java - 如何在java7中为特定用户设置文件访问属性

我正在使用 java7 文件 api。用于设置我搜索并能够更改所有者属性的文件的所有者。我的代码是

从此代码中,我可以设置文件的所有者。但我的任务是授予用户(rashmi)对文件的读取访问权限,并为另外一个用户授予读取/写入访问权限。如何授予用户特定访问权限,请给予一些代码或链接,以便我可以完成我的任务。