-
SocketChannel实现一对多聊天5
java.io.IOException: 您的主机中的软件中止了一个已建立的连接。
at sun.nio.ch.SocketDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(Unknown Source)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source)
at sun.nio.ch.IOUtil.read(Unknown Source)
at sun.nio.ch.SocketChannelImpl.read(Unknown Source)
at com.weiqun.freebao.msb.connector.MSBConnector.run(MSBConnector.java:214)
以上是出现的问题:
实现A----->B,当A发给B的第一条消息,B没有收到,A再发送第二条的时候就会爆以上错误
if (key.isValid() && key.isReadable()) {// 接收返回数据
try {
//读客户端发过来的数据,放进buffer中,buffer为目标缓冲区
//readBytes为读取的字节数,可能为零,如果该通道已到达流的末尾,则返回 -1
int readBytes = channel.read(buffer);
//System.out.println("读到的buffer长度为: " + readBytes);
while (readBytes > 0) {// 有可能一次性读取的数据是几条消息的集合,只要有消息就一直读
updateChannelLastActiveTime(channel);//更新通道的最后活动时间
processData(channel, buffer);//处理通道里接收到的信息
buffer.clear();//清空缓冲区,以便存放以后接收的信息
readBytes = channel.read(buffer);//将readBytes清零
}
} catch (Exception e) {// 读取时发生异常
activeChannelMap.get(channel).state = ChannelVO.STATE_WAIT_FOR_RECONNECTING;
e.printStackTrace();
log.debug(e.toString());
buffer.clear();//清空缓冲区
}2014年4月03日 09:15
目前还没有答案
相关推荐
本项目"基于nio的简易聊天室"旨在通过NIO技术实现一个简单的聊天室服务端和客户端,其特点是有图形用户界面(GUI)供用户交互。 NIO的核心组件包括通道(Channels)、缓冲区(Buffers)和选择器(Selectors)。在这...
总的来说,局域网聊天程序的设计与实现是一个综合性的项目,涵盖了网络编程、多线程、I/O操作等多个领域。通过这个项目,开发者不仅可以提升编程技能,还能深入理解计算机网络的基本原理,为今后从事更复杂的网络...
Java点对点聊天系统是基于非阻塞式网络编程实现的一种通信方式,它允许两个或多个用户通过互联网直接交换信息,而无需通过中央服务器作为中介。这种技术在现代分布式系统和实时通信应用中广泛使用,如VoIP服务、即时...
Java NIO(New IO)是Java 1.4版本引入的一种新的IO API,用来替代标准的Java IO API。...以上就是基于NIO实现网络聊天功能的关键技术点,通过这种方式,可以构建出一个高效、并发能力强的网络聊天系统。
本文将探讨一篇关于局域网聊天软件实现的毕业设计论文,该软件使用Java语言开发,包含了文字、视频、语音、文件传输以及远程桌面控制等多种功能,利用TCP和UDP协议进行数据传输,未依赖成熟的框架。以下是该论文中...
在这个“java nio 聊天室源码”项目中,开发者使用了NIO来构建一个聊天室应用,以实现用户之间的实时通信。 1. **Java NIO基础** - **通道(Channel)**:在NIO中,数据是通过通道进行传输的,如SocketChannel、...
3. **选择器(Selectors)**:选择器允许单线程同时监控多个通道,从而实现多路复用。当一个或多个通道准备进行读写操作时,选择器会通知我们,这样可以避免不必要的阻塞等待。 在聊天室源码中,可能会包含以下几个...
本项目“Java New IO实现的即时聊天软件(C&S)”是一个基于Java NIO技术构建的简单即时通讯系统,它允许用户之间进行实时的信息交流,而无需依赖数据库存储用户信息。在这里,我们将深入探讨Java NIO在即时聊天软件...
由于NIO是非阻塞的,服务器端可以使用一个线程处理多个客户端连接,降低了对线程资源的需求。但在实际应用中,可能还需要考虑如何优雅地处理客户端的输入输出,以及如何组织线程来处理复杂的业务逻辑。 总的来说,...
Java NIO(Non-blocking Input/...在实际开发中,Java NIO的使用需要对多线程、网络编程以及NIO API有深入的理解。通过这种方式构建的系统可以高效地处理大量并发连接,非常适合于聊天、游戏等实时性要求高的应用场景。
Java NIO(New IO)是Java 1.4版本引入的一个新特性,是对传统IO模型的重大改进。在传统的IO模型中,数据传输基于字节流或字符流,使用阻塞IO,即当读写操作进行时,如果数据没有准备好,线程会被阻塞,直到数据准备...
长连接是指在一次TCP连接建立后,双方保持连接状态,可以进行多次数据传输,而不是每次交互都创建新的连接。这种方式减少了连接建立与关闭的开销,适用于需要频繁交互的场景,如聊天应用。 在Netty中,我们通常会...
在Java编程领域,NIO(New IO)是Java 1.4引入的一种新的I/O模型,它是对传统IO模型的补充。NIO的核心特点是非阻塞,它允许应用程序以更有效的方式处理输入/输出操作,特别是在高并发的网络通信场景中。本示例通过两...
在这个“Android ipv6 chat”项目中,我们将探讨如何利用Android的APIs来实现一个基于TCP/IP的聊天应用,同时兼容IPv4和IPv6。 首先,理解Android的网络架构是至关重要的。Android提供了Socket编程接口,可以用来...
每个SocketChannel都有自己的缓冲区,可以同时处理多个客户端的数据读写,从而实现多路复用,提高了服务器的并发能力。 客户端则通过SocketChannel连接到服务器,同样使用缓冲区进行数据的发送和接收。用户输入的...
以上是对这个“上学时候做的一个java小程序qq”所涉及的知识点的详细解释,虽然具体实现细节未给出,但可以推断出该程序覆盖了Java开发中的多个关键领域。通过这样的实践,开发者能够深入理解网络编程、UI设计、多...
使用Protobuf,开发者可以定义结构化的数据模型,并在Java、C++、Python等多语言之间进行高效的数据交换,尤其适合于对性能有高要求的网络通信场景。 ### 实现步骤 1. **配置Bootstrap**:为服务器和客户端设置...
这种方式使得服务器可以同时处理多个连接,而不需要为每个连接创建一个新的线程,降低了系统的资源开销。 在标题中提到的"JAVA nio异步长连接服务端与客户端",我们可以理解为使用Java NIO实现的TCP长连接通信。TCP...
NIO与传统的IO模型不同,它提供了对多路复用器的支持,如Java的Selector类,可以同时监控多个通道的状态变化,从而提高了系统在高并发环境下的性能。在Socket编程中,NIO使得服务器可以处理更多的连接请求,而无需为...