服务器端用了Mina 是不是客户端也要用Mina才能通讯?
服务器端代码
客户端代码
日志:
2011-9-28 17:42:03 ServerMain main
信息: main thread exit!
log4j:WARN No appenders could be found for logger (org.apache.mina.filter.logging.LoggingFilter).
log4j:WARN Please initialize the log4j system properly.
2011-9-28 17:42:09 ServerHandler sessionCreated
信息: ........................session created
2011-9-28 17:42:09 ServerHandler sessionOpened
信息: ........................session opened
2011-9-28 17:42:09 ServerHandler messageSent
信息: ........................message sent
从日志上可以看出
客户端是连上了的,但是往服务器端发数据部成功,服务器往客户端发数据是可以的。例子很简单但却找不到问题出在哪里。
麻烦大家帮忙看看。
private static Logger log = Logger.getLogger(ServerMain.class.getName());
private static final int PORT = 11104;
public static void main(String[] args){
IoAcceptor acceptor;
try{
acceptor = new NioSocketAcceptor();
DefaultIoFilterChainBuilder builder = acceptor.getFilterChain();
//过滤器的位置很重要,在这里因为放到了第一个位置,它会记录原始字节码数据
LoggingFilter lf = new LoggingFilter();
builder.addLast("logger", lf);
//设置解码器
builder.addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(
Charset.forName("GBK"))));
//进行配置信息的设置
acceptor.getSessionConfig().setReadBufferSize(10);
//session配置
IoSessionConfig sessionConfig = acceptor.getSessionConfig();
//sessionConfig.setMaxReadBufferSize(1024*100);
//读写通道10秒后无操作进入空闲状态
sessionConfig.setIdleTime(IdleStatus.BOTH_IDLE, 10);
//设置处理器
acceptor.setHandler(new ServerHandler());
//绑定本地端口
acceptor.bind(new InetSocketAddress(PORT));
}catch(Exception e){
e.printStackTrace();
}
log.info("main thread exit!");
}
public class ServerHandler extends IoHandlerAdapter {
private final Logger log = Logger.getLogger(ServerHandler.class.getName());
@Override
public void sessionCreated(IoSession session) throws Exception {
log.log(Level.INFO, "........................session created");
super.sessionCreated(session);
}
@Override
public void sessionOpened(IoSession session) throws Exception {
log.log(Level.INFO, "........................session opened");
session.write("12345");
super.sessionOpened(session);
}
@Override
public void sessionClosed(IoSession session) throws Exception {
log.log(Level.INFO, "........................session closed");
super.sessionClosed(session);
}
@Override
public void sessionIdle(IoSession session, IdleStatus status)
throws Exception {
log.log(Level.INFO, "........................session idle");
super.sessionIdle(session, status);
}
@Override
public void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
log.log(Level.INFO, "........................session exception");
log.log(Level.WARNING,cause.getMessage());
super.exceptionCaught(session, cause);
}
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
log.log(Level.INFO, "........................message received");
log.log(Level.INFO, message.toString());
super.messageReceived(session, message);
}
@Override
public void messageSent(IoSession session, Object message) throws Exception {
log.log(Level.INFO, "........................message sent");
super.messageSent(session, message);
}
}
客户端代码
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost",11104);
OutputStream os = socket.getOutputStream();
os.write("abcdef".getBytes());
os.flush();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while(true){
}
}
日志:
2011-9-28 17:42:03 ServerMain main
信息: main thread exit!
log4j:WARN No appenders could be found for logger (org.apache.mina.filter.logging.LoggingFilter).
log4j:WARN Please initialize the log4j system properly.
2011-9-28 17:42:09 ServerHandler sessionCreated
信息: ........................session created
2011-9-28 17:42:09 ServerHandler sessionOpened
信息: ........................session opened
2011-9-28 17:42:09 ServerHandler messageSent
信息: ........................message sent
从日志上可以看出
客户端是连上了的,但是往服务器端发数据部成功,服务器往客户端发数据是可以的。例子很简单但却找不到问题出在哪里。
麻烦大家帮忙看看。
...全文
相关推荐
android mina 即时通讯 服务端客户端代码
《Android Mina即时通讯:服务端与客户端代码详解》在移动应用开发中,即时通讯功能已经成为不可或缺的一部分,尤其在社交应用中更是如此。
Mina框架实现双机通讯实战教程
Mina(Multipurpose Infrastructure for Network Applications)是一个高性能的网络通信框架,主要用来帮助开发者快速构建可扩展的网络应用。它抽象了底层网络操作,提供了简洁的API,从而简化了网络编程。尽管Mina已不再是最前沿的技术,它在IoT、即时通信等领域的应用依旧广泛。TCP/IP协议族是互联网的基础通信协议,它规定了如何通过网络传输数据包。该协议族包含了一系列用于数据传输、路由以及接口的标准。
mina通讯例子
总的来说,这个"mina通讯例子"是一个基础的MINA使用示例,展示了如何使用MINA库在客户端和服务器之间交换自定义对象。
Mina开发实例(服务端、客户端)DEMO
在这个"Mina开发实例(服务端、客户端)DEMO"中,我们将深入探讨Mina如何实现长连接通讯。首先,我们来理解服务端(Server)的实现。
通信层使用Mina框架实现双机通讯
要使用Mina实现双机通讯,我们首先要创建一个服务器端(Server)和一个或多个客户端(Client)。


高性能WEB开发
