Apache-mina客户端服务器端入门实例

本文详细介绍了使用 Java 和 Mina 协议栈实现客户端使用 Telnet 进行简单聊天服务的过程,包括服务端启动、配置过滤器、处理连接和接收发送数据的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mina服务端用java,客户端用telnet


1 两个类,主要是开启服务使用

package com.mina;

import java.net.InetSocketAddress;
import java.nio.charset.Charset;

import org.apache.log4j.Logger;
import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.LineDelimiter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;

public class Demo1Server {
	private static Logger logger = Logger.getLogger(Demo1Server.class);

	private static int PORT = 3005;

	public static void main(String[] args) {
		IoAcceptor acceptor = null;   // 创建连接
		try {
			// 创建一个非阻塞的server端的Socket
			acceptor = new NioSocketAcceptor();
			// 设置过滤器(使用Mina提供的文本换行符编解码器)
			acceptor.getFilterChain().addLast( //添加消息过滤器
					"codec",
					new ProtocolCodecFilter(new TextLineCodecFactory(Charset
							.forName("UTF-8"),
							LineDelimiter.WINDOWS.getValue(),
							LineDelimiter.WINDOWS.getValue())));
			// 设置读取数据的缓冲区大小
			acceptor.getSessionConfig().setReadBufferSize(2048);
			// 读写通道10秒内无操作进入空闲状态
			acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
			// 绑定逻辑处理器
			acceptor.setHandler(new Demo1ServerHandler()); // 添加业务处理
			// 绑定端口
			acceptor.bind(new InetSocketAddress(PORT));
			logger.info("服务端启动成功...     端口号为:" + PORT);
		} catch (Exception e) {
			logger.error("服务端启动异常....", e);
			e.printStackTrace();
		}
	}
}
package com.mina;


import java.net.InetSocketAddress;
import java.nio.charset.Charset;


import org.apache.log4j.Logger;
import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.LineDelimiter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;


public class Demo1Server {
	private static Logger logger = Logger.getLogger(Demo1Server.class);


	private static int PORT = 3005;


	public static void main(String[] args) {
		IoAcceptor acceptor = null;   // 创建连接
		try {
			// 创建一个非阻塞的server端的Socket
			acceptor = new NioSocketAcceptor();
			// 设置过滤器(使用Mina提供的文本换行符编解码器)
			acceptor.getFilterChain().addLast( //添加消息过滤器
					"codec",
					new ProtocolCodecFilter(new TextLineCodecFactory(Charset
							.forName("UTF-8"),
							LineDelimiter.WINDOWS.getValue(),
							LineDelimiter.WINDOWS.getValue())));
			// 设置读取数据的缓冲区大小
			acceptor.getSessionConfig().setReadBufferSize(2048);
			// 读写通道10秒内无操作进入空闲状态
			acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
			// 绑定逻辑处理器
			acceptor.setHandler(new Demo1ServerHandler()); // 添加业务处理
			// 绑定端口
			acceptor.bind(new InetSocketAddress(PORT));
			logger.info("服务端启动成功...     端口号为:" + PORT);
		} catch (Exception e) {
			logger.error("服务端启动异常....", e);
			e.printStackTrace();
		}
	}
}



2 服务端启动:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
2014-01-17 10:49:18,203 INFO  Demo1Server  - 服务端启动成功...     端口号为:3005
2014-01-17 10:50:11,500 INFO  Demo1ServerHandler  - 服务端与客户端创建连接...
2014-01-17 10:50:11,546 INFO  Demo1ServerHandler  - 服务端与客户端连接打开...
2014-01-17 10:50:21,546 INFO  Demo1ServerHandler  - 服务端进入空闲状态...
2014-01-17 10:50:32,953 INFO  Demo1ServerHandler  - 服务端接收到的数据为:testdemo
2014-01-17 10:50:32,984 INFO  Demo1ServerHandler  - 服务端发送信息成功...
2014-01-17 10:50:42,984 INFO  Demo1ServerHandler  - 服务端进入空闲状态...
2014-01-17 10:50:47,250 INFO  Demo1ServerHandler  - 服务端接收到的数据为:bye
2014-01-17 10:51:19,937 INFO  Demo1ServerHandler  - 服务端与客户端创建连接...
2014-01-17 10:51:19,937 INFO  Demo1ServerHandler  - 服务端与客户端创建连接...
2014-01-17 10:51:19,937 INFO  Demo1ServerHandler  - 服务端与客户端连接打开...
2014-01-17 10:51:19,937 INFO  Demo1ServerHandler  - 服务端与客户端连接打开...
2014-01-17 10:51:20,531 INFO  Demo1ServerHandler  - 服务端与客户端创建连接...
2014-01-17 10:51:20,531 INFO  Demo1ServerHandler  - 服务端与客户端连接打开...
2014-01-17 10:51:20,531 INFO  Demo1ServerHandler  - 服务端接收到的数据为:GET / HTTP/1.1
2014-01-17 10:51:20,531 INFO  Demo1ServerHandler  - 服务端接收到的数据为:Accept: */*
2014-01-17 10:51:20,546 INFO  Demo1ServerHandler  - 服务端接收到的数据为:Accept-Language: zh-cn
2014-01-17 10:51:20,546 INFO  Demo1ServerHandler  - 服务端接收到的数据为:User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0;  Embedded Web Browser from: http://bsalsa.com/; .NET4.0C; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
2014-01-17 10:51:20,546 INFO  Demo1ServerHandler  - 服务端接收到的数据为:Accept-Encoding: gzip, deflate
2014-01-17 10:51:20,546 INFO  Demo1ServerHandler  - 服务端接收到的数据为:Host: 127.0.0.1:3005
2014-01-17 10:51:20,546 INFO  Demo1ServerHandler  - 服务端接收到的数据为:Connection: Keep-Alive
2014-01-17 10:51:20,546 INFO  Demo1ServerHandler  - 服务端接收到的数据为:
2014-01-17 10:51:20,546 INFO  Demo1ServerHandler  - 服务端发送信息成功...
2014-01-17 10:51:20,546 INFO  Demo1ServerHandler  - 服务端发送信息成功...
2014-01-17 10:51:20,546 INFO  Demo1ServerHandler  - 服务端发送信息成功...
2014-01-17 10:51:20,546 INFO  Demo1ServerHandler  - 服务端发送信息成功...
2014-01-17 10:51:20,546 INFO  Demo1ServerHandler  - 服务端发送信息成功...
2014-01-17 10:51:20,546 INFO  Demo1ServerHandler  - 服务端发送信息成功...
2014-01-17 10:51:20,546 INFO  Demo1ServerHandler  - 服务端发送信息成功...
2014-01-17 10:51:20,546 INFO  Demo1ServerHandler  - 服务端发送信息成功...
2014-01-17 10:51:29,937 INFO  Demo1ServerHandler  - 服务端进入空闲状态...
2014-01-17 10:51:29,937 INFO  Demo1ServerHandler  - 服务端进入空闲状态...
2014-01-17 10:51:30,546 INFO  Demo1ServerHandler  - 服务端进入空闲状态...
2014-01-17 10:51:40,546 INFO  Demo1ServerHandler  - 服务端进入空闲状态...
2014-01-17 10:51:43,109 INFO  Demo1ServerHandler  - 服务端与客户端创建连接...
2014-01-17 10:51:43,109 INFO  Demo1ServerHandler  - 服务端与客户端连接打开...
2014-01-17 10:51:50,203 INFO  Demo1ServerHandler  - 服务端接收到的数据为:this is my time
2014-01-17 10:51:50,203 INFO  Demo1ServerHandler  - 服务端发送信息成功...
2014-01-17 10:51:50,546 INFO  Demo1ServerHandler  - 服务端进入空闲状态...
2014-01-17 10:51:51,562 INFO  Demo1ServerHandler  - 服务端接收到的数据为:
2014-01-17 10:51:51,562 INFO  Demo1ServerHandler  - 服务端发送信息成功...
2014-01-17 10:51:52,718 INFO  Demo1ServerHandler  - 服务端接收到的数据为:
2014-01-17 10:51:52,718 INFO  Demo1ServerHandler  - 服务端发送信息成功...
2014-01-17 10:51:54,484 INFO  Demo1ServerHandler  - 服务端接收到的数据为:hello
2014-01-17 10:51:54,484 INFO  Demo1ServerHandler  - 服务端发送信息成功...
2014-01-17 10:51:58,421 INFO  Demo1ServerHandler  - 服务端接收到的数据为:demo
2014-01-17 10:51:58,421 INFO  Demo1ServerHandler  - 服务端发送信息成功...
2014-01-17 10:52:00,546 INFO  Demo1ServerHandler  - 服务端进入空闲状态...
2014-01-17 10:52:08,421 INFO  Demo1ServerHandler  - 服务端进入空闲状态...
2014-01-17 10:52:10,546 INFO  Demo1ServerHandler  - 服务端进入空闲状态...
2014-01-17 10:52:18,421 INFO  Demo1ServerHandler  - 服务端进入空闲状态...
2014-01-17 10:52:20,546 INFO  Demo1ServerHandler  - 服务端进入空闲状态...
2014-01-17 10:52:28,421 INFO  Demo1ServerHandler  - 服务端进入空闲状态...
2014-01-17 10:52:30,546 INFO  Demo1ServerHandler  - 服务端进入空闲状态...
2014-01-17 10:52:38,421 INFO  Demo1ServerHandler  - 服务端进入空闲状态...
2014-01-17 10:52:40,546 INFO  Demo1ServerHandler  - 服务端进入空闲状态...

4 开启客户端 cmd

然后


输入bye退出


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静山晚风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值