草庐IT

java - 网络 NIO : Read received messages

我正在使用Java中的NettyNIO开发客户端和服务器通信系统。我的代码可以找到inthefollowingrepository.目前我有一台服务器和两个客户端,我正在将信息从服务器发送到客户端,反之亦然。我想弄清楚的是,当我从第一个客户端接收到服务器的消息时,我如何将该消息发送到第二个客户端(以及从客户端2到客户端1的相反方向)。如何向特定客户端发送消息?我注意到我的问题是由于我尝试从服务器发送消息的方式引起的。我在serverHandler中的代码如下:for(Channelch:channels1){responseData.setIntValue(channels1.size

Java NIO Servlet 到文件

有没有一种方法(无需缓冲整个输入流)从JavaServlet获取HttpServletRequest并使用所有NIO将其写入文件?值得一试吗?从普通的java.io流读取和写入java.niochannel会更快,还是它们都真的需要纯NIO才能看到好处?谢谢。编辑:所以我只是做了一个快速而肮脏的基准测试,从一个磁盘读取一个文件并写入另一个磁盘(所以我实际上是在测试代码而不是磁盘)。Averages:InputStream->OutputStream:321ms.FileChannel->FileChannel:3ms.InputStream->FileChannel:600ms.我实际

java.nio 与每个套接字的新线程

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我正在开发一个1对多服务器-客户端应用程序,这是一个小项目。由于套接字IO是阻塞的。我正在为此寻找解决方案。谁能告诉我这两种解决方案的优缺点?使用java.nio为每个连接的客户端新建一个线程。谢谢

具有多线程的 Java NIO SocketChannel.read()

我正在使用带有一个选择线程和多个工作线程(用于执行真正的读/写)的JavaNIO实现一个简单的文件服务器。代码的主要部分如下所示:while(true){intnum=selector.select();if(num>0){Iteratorkeys=selector.selectedKeys().iterator();finalSelectionKeykey=keys.next();keys.remove();if(key.isValid()){if(key.isAcceptable()){accept(key);}elseif(key.isReadable()){performRea

java - Fast NIO,Java 异步 HTTP 服务器

关闭。这个问题不满足StackOverflowguidelines.它目前不接受答案。想改善这个问题吗?更新问题,使其成为on-topic对于堆栈溢出。7年前关闭。Improvethisquestion关注thisquestion实际上,我也正处于为我的一个项目寻找合适的HTTP容器的阶段。我查看了几个容器,但我仍然不确定哪一个最适合高负载AJAX请求。ApacheMina看起来很有前途,但也相对复杂。名为AsyncWeb的异步Web服务器实现似乎已与Mina合并,但我还找不到它的任何生产版本。在另一个问题中,我推荐了SimpleHTTP我非常喜欢的服务器,因为它...非常简单、清晰和

java - 使用 java.nio.file.Paths 接口(interface)时缺少方案 (IllegalArgumentException)

这是一个非常简单的Java问题。我在linux系统上使用Java8和eclipsekepler。我一直在尝试NIO.2。我的代码是:packagelucasTest;importjava.io.IOException;importjava.net.URI;importjava.net.URISyntaxException;importjava.nio.file.*;publicclassLucas{publicstaticvoidmain(String[]args)throwsURISyntaxException{URIu=newURI("./Lucas.java");Pathp=Pa

java - ThreadLocal 与 Tomcat NIO Connector 一起使用是否安全

这只是在我的负载测试期间测试TomcatNIO连接器时想到的。我还使用了ThreadLocal,我还使用了Spring,我知道它在几个地方也使用了它。由于NIO连接器没有每个连接一个线程,我担心如果ThreadLocal对象在被清理之前与另一个线程共享,可能会导致很难找到错误。但是,我认为这不是问题,因为它不是我能找到的书面警告,我也没有找到任何其他关于此的警告帖子。我假设NIO连接器对服务于实际请求的线程没有影响。在我做出这个假设之前,我希望找到一些具体的证据。 最佳答案 只有熟悉Tomcat代码的人才能给你一个具体的答案,但我会

Java:从具有缓冲输入的随机访问文件中读取字符串

我以前从未有过JavaIOAPI的亲body验,现在我真的很沮丧。我很难相信它有多么奇怪和复杂,以及完成一项简单的任务会有多么困难。我的任务:我有2个位置(起始字节,结束字节),pos1和pos2。我需要读取这两个字节之间的行(包括起始字节,不包括结束字节)并将它们用作UTF8String对象。例如,在大多数脚本语言中,它将是一个非常简单的1-2-3行(在Ruby中,但对于Python、Perl等,它基本上是相同的):f=File.open("file.txt").seek(pos1)whilef.posJavaIOAPI很快就会变得糟糕;)事实上,我看到了两种从常规本地文件读取行(以

java - 如何在Java中实现对映射到内存的文件的并发读取?

我有很多线程并发读取同一个文件(总共100M左右),只有一个线程更新文件。我想将文件映射到内存中以减少文件I/O。这在Java中如何实现?我基本上考虑过以下2种方法:用字节数组存储文件,多线程读取时每次创建ByteArrayInputStream读取缓冲区。用NIO获取一个文件channel,同步channel从MappedByteBuffer中读取,实现多线程读取。我不确定这些方法是否有效。如果有更好的解决方案,请帮忙提示。 最佳答案 使用NIO,每个线程创建自己的映射并读取自己的私有(private)缓冲区中的数据。保持私有(p

java - Files.newDirectoryStream 与 Files.list

我知道Files.list(Path)使用Files.newDirectoryStream(Path)在内部,基本上只是包装DirectoryStream。但是我不明白,我想用第一个还是后者。如果我想使用流式API,这只是一种方便的方法吗?我自己可以很容易地做到这一点,seethisquestion.如果查看Files.list的实现,内部DirectoryStream抛出的异常包含在UncheckedIOException中。有什么我应该知道的吗? 最佳答案 这通常是风格问题。如果要使用外部迭代(for(Pathpath:dirS