现在的要求是当客户端连接服务器后,发送“login”登陆报文,服务器接受到登陆消息后,就要给客户端一直发送数据。
请问应该怎么做?我开启了一个线程,然后给客户端发送消息,但是客户端收不到。
这个是我写的线程类
public class SendMessageThread implements Runnable{
private IoSession session = null;
private String msg = null;
public SendMessageThread(IoSession session) {
this.session = session;
}
public SendMessageThread(IoSession session, String msg) {
this.msg = msg;
}
@Override
public void run() {
// TODO Auto-generated method stub
if(null == msg) {
msg = "test";
}
while(true) {
System.out.println(new Date()+":"+msg);
session.write(new Date()+":"+msg);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
服务器端messageReceived方法,接受到登陆报文后,就一直给客户端发送消息
public void messageReceived(IoSession session, Object obj) throws Exception {
// TODO Auto-generated method stub
String msg = (String)obj;
System.out.println("服务器收到:"+msg);
if(msg.equalsIgnoreCase("login")) {
System.out.println("用户登陆");
session.write("nihao");
session.write("nono");
new SendMessageThread(session).run();
} else {
System.out.println("Undefined operation.");
}
}
相关推荐
在本实例中,我们将探讨如何使用Apache Mina2构建一个简单的服务器和客户端。 首先,让我们了解一下Mina2的核心概念。Mina2基于Java NIO(Non-blocking I/O)库,提供了异步I/O操作,这意味着它不会因为等待数据而...
标题中的"mina客户端简单代码示例"意味着我们将探讨如何使用Mina框架编写一个基础的客户端程序,该程序能够连接到服务器并发送数据。描述指出,运行这个客户端程序(minaTestClient)会展示一个窗口,用户可以通过...
Mina服务器端主要负责监听网络连接、接收客户端请求并发送响应。在这个Demo中,服务器端通常会包含以下组件: 1. **ServerBootstrap**: 这是服务器启动的核心类,用于配置服务器的参数,如绑定端口、选择NIO或BIO...
在Demo中,可能包含自定义的编码器和解码器,确保客户端发送的数据能被正确解析,反之亦然。 - **事件处理**:Mina使用事件驱动模型,如`messageReceived()`、`sessionCreated()`、`sessionClosed()`等方法会在相应...
6. **发送和接收数据**: 在Event Handler中,我们可以调用Session的write方法发送数据,监听MessageReceived事件接收数据。 7. **关闭连接**: 当不再需要连接时,调用Session的close方法关闭连接。 在实际开发中,...
2. 客户端代码:演示如何建立一个MINA客户端,连接到服务端,发送数据并接收回应。 3. 相关配置文件:可能包括服务器端和客户端的配置,如日志配置、线程池设置等。 4. 测试脚本或文档:解释如何运行示例,以及预期...
3. **异步客户端**:异步客户端则使用非阻塞I/O,这意味着客户端发送请求后不会等待服务器的回复,而是立即返回并继续执行其他任务。这样可以提高系统并发能力,尤其是在处理大量并发连接时。MINA的异步客户端同样...
一旦连接成功,客户端也可以创建`Session`对象,通过这个`Session`发送数据给服务端。同样,客户端也可以注册事件处理器来响应服务端的消息。 5. **事件驱动模型**:MINA采用事件驱动模型,通过监听器和处理器来...
它们可以调用write()方法发送数据,并在IoHandler的messageReceived()方法中处理接收到的数据。 - MINA2支持多种编码和解码器,可以方便地处理各种类型的数据,如字符串、字节流等。 5. **会话管理**: - Session...
- **发送与接收数据**:客户端通过Session发送数据,并监听Session的事件来接收服务器响应。 4. **编解码过程** 在Mina中,数据的编码和解码通常由ProtocolDecoder和ProtocolEncoder实现。这两个接口分别处理输入...
这两个部分都是基于MINA框架构建的,分别实现了服务器接收客户端连接、处理数据和客户端发起连接、发送数据的功能。 1. **MINA服务端**: - MINA服务端的核心组件是Acceptor,它负责监听指定的端口,当有新的...
标题中提到的"android mina 即时通讯 服务端客户端代码",意味着我们将探讨如何在Android客户端和服务器之间建立这样的通信链路。在服务端,你需要创建一个基于Mina的SocketAcceptor,监听特定的端口(如描述中提到...
1. **初始化ServerBootstrap**:首先,我们需要创建一个`ServerBootstrap`对象,它是Mina服务器的核心配置类。 2. **设置通道处理链**:通过`pipeline()`方法设置`ChannelPipeline`,它定义了事件的处理流程。一般会...
MINA提供了一套事件驱动的模型,使得客户端可以处理连接建立、数据接收和发送等事件。 4. **服务端实现**:服务端同样基于MINA,通过ServerBootstrap配置Acceptor,监听端口,接收到客户端连接请求后,创建Session...
标题中的“给予mina协议进行大数据传输”指的是一种基于Java的网络通信框架——Apache MINA(Model-View-Controller for Network Applications)。MINA是Apache软件基金会的一个项目,它提供了一个高度可扩展和高...
`write(message)`用于向客户端发送数据;而`close()`则用于结束会话。 3. **IoProcessor**: IoProcessor是一个内部线程,用于处理I/O事件,如数据的读取和写入。它定期检查Session是否有待处理的数据,并通过...
6. **会话管理**:Mina中的IoSession对象代表了服务端和客户端之间的连接会话,提供了管理连接状态、传输数据和配置会话属性的能力。 7. **数据传输**:在示例中,我们可以看到如何使用WriteFuture和ReadFuture来...
Mina 是一个强大的开源框架,主要用于构建网络应用,如服务器和客户端。在Java环境中,它提供了高效的、事件驱动的网络应用程序框架,支持TCP和UDP协议,适用于开发高性能、高并发的网络服务。在这个"mina 长连接 ...
- 服务端:在Mina的处理器中,重写`sessionCreated()`, `messageReceived()`, `messageSent()`等方法,处理客户端连接、接收和发送数据。 - 客户端:通过Socket的输入/输出流读写数据,实现与服务端的通信。 4. *...
在"echo_client_udp"中,当客户端发送数据后,MINA2会异步等待服务器的响应,这样可以有效地避免线程阻塞,提高系统性能。 5. 学习与实践价值: "echo_client_udp"是学习MINA2和UDP通信的理想起点。通过这个示例,...