- 浏览: 27818 次
- 性别:
- 来自: 重庆
最新评论
tcp连接协议实例。
完整代码请在附件中下载。
直接先启动服务端,再启动客户端即可
//服务端打印信息为:
//客户端打印信息为:
服务端Server代码
服务端Handler代码:
客户端Client代码:
客户端Handler代码:
常量信息类GlobalParam.java:
完整代码请在附件中下载。
直接先启动服务端,再启动客户端即可
//服务端打印信息为:
[10:49:57] main INFO [] [] [com.tcp.server.TcpServer] - Starting Server.... and then Listening on:8880 [10:49:57] main INFO [] [] [com.tcp.server.TcpServer] - Server listening on 8880 [10:50:58] NioProcessor-2 INFO [] [] [com.tcp.server.TcpServer] - 服务端:sessionCreated...2015-09-30 10:50:58 [10:50:58] pool-3-thread-1 INFO [] [] [com.tcp.server.TcpServer] - 服务端:sessionOpened...2015-09-30 10:50:58 服务端:messageReceived...sessionCreated客户端--Wed Sep 30 10:50:58 CST 2015 [10:50:58] pool-3-thread-1 INFO [] [] [com.tcp.server.TcpServer] - 服务端:messageSent...2015-09-30 10:50:58 [10:51:00] pool-3-thread-2 INFO [] [] [com.tcp.server.TcpServer] - 服务端:messageSent...2015-09-30 10:51:00 [10:51:01] pool-3-thread-1 INFO [] [] [com.tcp.server.TcpServer] - 服务端:sessionClosed...2015-09-30 10:51:01
//客户端打印信息为:
Starting client.... and then connect to-- 127.0.0.1:8880 客户端:sessionCreated... 客户端:sessionOpened... 客户端:messageSent... 客户端:Client ---messageReceived... 客户端:来至服务器的消息:{"name":"aobama"} name:aobama 客户端:Client ---messageReceived... 客户端:exceptionCaught...
服务端Server代码
package com.tcp.server; import java.io.IOException; import java.net.InetAddress; import java.net.InetSocketAddress; import java.nio.charset.Charset; import java.util.concurrent.Executors; import org.apache.log4j.Logger; import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder; import org.apache.mina.core.session.IdleStatus; import org.apache.mina.filter.codec.ProtocolCodecFilter; import org.apache.mina.filter.codec.textline.TextLineCodecFactory; import org.apache.mina.filter.executor.ExecutorFilter; import org.apache.mina.filter.firewall.BlacklistFilter; import org.apache.mina.filter.logging.LogLevel; import org.apache.mina.filter.logging.LoggingFilter; import org.apache.mina.transport.socket.SocketSessionConfig; import org.apache.mina.transport.socket.nio.NioSocketAcceptor; import com.tcp.GlobalParam; /** * * @author wangchao * @Version 1.0 * @date 2015-9-30 上午10:22:21 */ public class TcpServer { // private static final Logger logger = LoggerFactory.getLogger(TcpServer.class); private static final Logger logger = Logger.getLogger(TcpServer.class); /** * 初始化服务 整行传输--new TextLineCodecFactory(Charset.forName( "UTF-8" )) * @throws IOException */ public static void initialize() throws IOException { // Create an Acceptor NioSocketAcceptor acceptor = new NioSocketAcceptor(); // Add Handler acceptor.setHandler(new TcpServerHandler()); //过滤器链 DefaultIoFilterChainBuilder chain = acceptor.getFilterChain(); //日志 LoggingFilter loggingFilter = new LoggingFilter(); loggingFilter.setSessionClosedLogLevel(LogLevel.NONE); loggingFilter.setSessionCreatedLogLevel(LogLevel.DEBUG); loggingFilter.setSessionOpenedLogLevel(LogLevel.INFO); loggingFilter.setExceptionCaughtLogLevel(LogLevel.ERROR); chain.addLast("logging", loggingFilter); //黑名单 InetAddress[] addressArr = new InetAddress[]{}; BlacklistFilter blackList = new BlacklistFilter(); blackList.setBlacklist(addressArr); chain.addLast("blackList", blackList); //编码解码过滤器--普通字符串 chain.addLast("codec",new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName( "UTF-8" )))); //线程池 chain.addLast("threadPool",new ExecutorFilter(Executors.newCachedThreadPool())); //session配置 SocketSessionConfig cfg = acceptor.getSessionConfig(); cfg.setReuseAddress(true);//设置复用地址 cfg.setReadBufferSize(GlobalParam.READ_BUFFER_SIZE);//读 cfg.setSendBufferSize(GlobalParam.SEND_BUFFER_SIZE);//写 cfg.setReceiveBufferSize(GlobalParam.RECEIVE_BUFFER_SIZE);//收 cfg.setIdleTime(IdleStatus.BOTH_IDLE, 2); logger.info("Starting Server.... and then Listening on:"+GlobalParam.TCP_SHORT_SERVER_PORT); //Bind地址 acceptor.bind(new InetSocketAddress(GlobalParam.TCP_SHORT_SERVER_PORT)); logger.info("Server listening on "+GlobalParam.TCP_SHORT_SERVER_PORT); } public static void main(String[] args) { try { initialize(); } catch (IOException e) { logger.error("start Server is throw Exception ",e); } } }
服务端Handler代码:
package com.tcp.server; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.log4j.Logger; import org.apache.mina.core.service.IoHandler; import org.apache.mina.core.session.IdleStatus; import org.apache.mina.core.session.IoSession; /** * * @author wangchao * @Version 1.0 * @date 2015-9-30 上午10:22:14 */ public class TcpServerHandler implements IoHandler{ private static final Logger logger = Logger.getLogger(TcpServer.class); @Override public void exceptionCaught(IoSession session, Throwable e) throws Exception { logger.debug(e.getMessage(),e); // e.printStackTrace(); } @Override public void messageReceived(IoSession session, Object msg) throws Exception { System.out.println("服务端:messageReceived..."+msg.toString()); session.write("{\"name\":\"aobama\"}"); } @Override public void messageSent(IoSession arg0, Object arg1) throws Exception { // TODO Auto-generated method stub logger.info("服务端:messageSent..."+getCurrentDate()); } @Override public void sessionClosed(IoSession arg0) throws Exception { // TODO Auto-generated method stub logger.info("服务端:sessionClosed..."+getCurrentDate()); } @Override public void sessionCreated(IoSession arg0) throws Exception { // TODO Auto-generated method stub // System.out.println("sessionCreated..."); logger.info("服务端:sessionCreated..."+getCurrentDate()); } @Override public void sessionIdle(IoSession session, IdleStatus arg1) throws Exception { // TODO Auto-generated method stub session.write("idle--"+getCurrentDate()); // logger.info("sessionIdle "+CommonsUtils.getCurrentDate()); } @Override public void sessionOpened(IoSession arg0) throws Exception { // TODO Auto-generated method stub logger.info("服务端:sessionOpened..."+getCurrentDate()); } @Override public void inputClosed(IoSession arg0) throws Exception { // TODO Auto-generated method stub } private static String getCurrentDate(){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); return sdf.format(new Date()); } }
客户端Client代码:
package com.tcp.client; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.charset.Charset; import java.util.concurrent.Executors; import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder; import org.apache.mina.core.future.ConnectFuture; import org.apache.mina.filter.codec.ProtocolCodecFilter; import org.apache.mina.filter.codec.textline.TextLineCodecFactory; import org.apache.mina.filter.executor.ExecutorFilter; import org.apache.mina.filter.logging.LoggingFilter; import org.apache.mina.transport.socket.SocketSessionConfig; import org.apache.mina.transport.socket.nio.NioSocketConnector; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.tcp.GlobalParam; import com.tcp.server.TcpServer; /** * * @author wangchao * @Version 1.0 * @date 2015-9-30 上午10:21:59 */ public class TcpClientDemo { private static final Logger logger = LoggerFactory.getLogger(TcpServer.class); public static void connectServer() throws IOException { // Create an Acceptor NioSocketConnector connector = new NioSocketConnector(); // Add Handler connector.setHandler(new TcpClientDemoHandler()); //过滤器链 DefaultIoFilterChainBuilder chain = connector.getFilterChain(); //日志 chain.addLast("logging", new LoggingFilter()); //编码解码过滤器 Http // chain.addLast("http",new HttpClientCodec()); chain.addLast("codec",new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName( "UTF-8" )))); // connector.getFilterChain().addLast("codec",new ProtocolCodecFilter(new MyProtocalCodecFactory("UTF-8"))); //线程池 chain.addLast("threadPool", new ExecutorFilter(Executors.newCachedThreadPool())); // Create Session Configuration SocketSessionConfig cfg = connector.getSessionConfig(); cfg.setReuseAddress(true); cfg.setReadBufferSize(GlobalParam.READ_BUFFER_SIZE); cfg.setReceiveBufferSize(GlobalParam.RECEIVE_BUFFER_SIZE); // cfg.setIdleTime(IdleStatus.BOTH_IDLE, 2); logger.info("Starting client......"); System.out.println("Starting client.... and then connect to-- "+GlobalParam.TCP_SHORT_SERVER_HOST+":"+GlobalParam.TCP_SHORT_SERVER_PORT); // Bind and be ready to listen ConnectFuture cf = connector.connect(new InetSocketAddress(GlobalParam.TCP_SHORT_SERVER_HOST,GlobalParam.TCP_SHORT_SERVER_PORT)); // // cf.awaitUninterruptibly(); // connector.dispose(); } public static void main(String[] args) { try { connectServer(); } catch (IOException e) { // e.printStackTrace(); logger.error("start Server is throw Exception ",e); } } }
客户端Handler代码:
package com.tcp.client; import java.util.Date; import net.sf.json.JSONObject; import org.apache.mina.core.service.IoHandler; import org.apache.mina.core.session.IdleStatus; import org.apache.mina.core.session.IoSession; /** * * @author wangchao * @Version 1.0 * @date 2015-9-30 上午10:22:06 */ public class TcpClientDemoHandler implements IoHandler{ @Override public void exceptionCaught(IoSession arg0, Throwable arg1) throws Exception { // TODO Auto-generated method stub System.out.println("客户端:exceptionCaught..."); } @Override public void messageReceived(IoSession session, Object msg) throws Exception { // TODO Auto-generated method stub System.out.println("客户端:Client ---messageReceived..."); String str = msg.toString(); JSONObject json = JSONObject.fromObject(msg); System.out.println("客户端:来至服务器的消息:"+str+" name:"+json.getString("name")); // Date date = new Date(); // session.write(date.toString()); // System.out.println("Message written..."); // session.close(true); } @Override public void messageSent(IoSession session, Object arg1) throws Exception { // TODO Auto-generated method stub System.out.println("客户端:messageSent..."); } @Override public void sessionClosed(IoSession arg0) throws Exception { // TODO Auto-generated method stub System.out.println("客户端:sessionClosed..."); } @Override public void sessionCreated(IoSession session) throws Exception { // TODO Auto-generated method stub System.out.println("客户端:sessionCreated..."); session.write("sessionCreated客户端--"+new Date().toString()); } @Override public void sessionIdle(IoSession arg0, IdleStatus arg1) throws Exception { // TODO Auto-generated method stub System.out.println("客户端:sessionIdle..."); } @Override public void sessionOpened(IoSession session) throws Exception { // TODO Auto-generated method stub System.out.println("客户端:sessionOpened..."); } @Override public void inputClosed(IoSession arg0) throws Exception { // TODO Auto-generated method stub } }
常量信息类GlobalParam.java:
package com.tcp; /** * * @author wangchao * @Version 1.0 * @date 2015-9-30 上午9:40:49 */ public class GlobalParam { /** * TCP短连接地址 */ public static final String TCP_SHORT_SERVER_HOST = "127.0.0.1"; /** * TCP短连接端口 */ public static final int TCP_SHORT_SERVER_PORT = 8880; /** * TCP长连接地址 */ public static final String TCP_LONG_SERVER_HOST = "127.0.0.1"; /** * TCP长连接端口 */ public static final int TCP_LONG_SERVER_PORT = 8881; /** * HTTP连接地址 */ public static final String HTTP_SERVER_HOST = "127.0.0.1"; /** * HTTP连接端口 */ public static final int HTTP_SERVER_PORT = 8882; /** * 读-缓冲区大小,一次(2048byte)2K */ public static final int READ_BUFFER_SIZE = 2048; /** * 写-缓冲区大小,一次(2048byte)2K */ public static final int SEND_BUFFER_SIZE = 2048; /** * 收-缓冲区大小,一次(2048byte)2K */ public static final int RECEIVE_BUFFER_SIZE = 2048; }
- minaTcp协议实例.rar (5.7 MB)
- 下载次数: 0
相关推荐
删除和重建 Oracle 实例 Oracle 数据库是一种关系型数据库管理系统,广泛应用于企业级数据库应用中。然而,在某些情况下,我们需要删除和重建 Oracle 实例,以便解决一些问题或进行升级维护。在这篇文章中,我们将...
Proteus单片机仿真实例源码-32x16汉字.zip Proteus单片机仿真实例源码-44行列键盘.rar Proteus单片机仿真实例源码-44行列键盘.zip Proteus单片机仿真实例源码-485全双工通信.rar Proteus单片机仿真实例源码-485全...
OpenGL实例 OpenGL实例 OpenGL实例 OpenGL实例 OpenGL实例
实例1 如何使用错误提醒控件 实例2 如何使用信息提示控件 实例3 如何使用菜单控件 实例4 如何使用工具栏控件 实例5 如何使用状态栏控件 实例6 如何使用托盘控件 实例7 如何使用标签页控件 实例8 如何使用进度条控件 ...
### SQL Server 2008 R2 添加实例的详细步骤 #### 一、概述 SQL Server 2008 R2 是一款强大的关系型数据库管理系统,广泛应用于企业级数据管理和处理场景。对于需要在同一台服务器上运行多个独立的SQL Server环境...
数据结构实践教程:内含17个经典数据结构实例 根据五个不同数据结构,对每个结构都有2~4个经典实例。每个实例都有项目简介、设计思路、数据结构、完整程序、运行结果五个部分,可以直接拿来做一篇课程设计。实例名称...
QT5开发及实例配套[源代码] Qt是诺基亚公司的C++可视化开发平台,本书以Qt 5作为平台,每个章节在简单介绍开发环境的基础上,用一个小实例,介绍Qt 5应用程序开发各个方面,然后系统介绍Qt 5应用程序的开发技术,...
本实例集合将深入探讨J2EE的核心概念和技术,帮助开发者更好地理解和应用J2EE。 首先,J2EE的核心组件包括Servlet、JavaServer Pages (JSP)、JavaBean、EJB(Enterprise JavaBeans)、JMS(Java Message Service)...
下面我们将围绕"LabVIEW 55个经典实例"这一主题,探讨这些实例可能涵盖的知识点,以及它们如何帮助用户提升LabVIEW技能。 1. **基础编程概念**:这55个实例可能会包含基础的编程概念,如循环(For Loop, While Loop...
java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象...
《C++编程实例100篇》是一本深入浅出的C++编程教程,它以实践为主导,通过丰富的实例帮助学习者掌握C++语言的基础和核心概念。这本书的每个实例都精心设计,旨在帮助初学者和有经验的开发者巩固和提升C++编程技能。 ...
本"JS实例大全"聚焦于展示JavaScript在实际应用中的各种功能和技巧,帮助开发者更好地理解和掌握这门语言。 一、基础语法与数据类型 JavaScript的基础语法包括变量声明(var、let、const)、数据类型(如字符串、...
MCGS高级教程实例模板MCGS高级教程实例模板MCGS高级教程实例模板MCGS高级教程实例模板MCGS高级教程实例模板MCGS高级教程实例模板MCGS高级教程实例模板MCGS高级教程实例模板MCGS高级教程实例模板MCGS高级教程实例模板...
第2篇 数据库应用开发实例 第3章 家庭理财系统54 3.1 实例功能说明54 3.2 系统设计方案55 3.2.1 模块设计及开发环境55 3.2.2 系统结构图55 3.2.3 数据库设计56 3.3 相关技术点拨58 3.3.1 ado.net数据库访问技术58 ...
githubsakuracat简介及应用实例及实例分析.txt简介及应用实例及实例分析.txtsakuracat简介及应用实例及实例分析.txt简介及应用实例及实例分析.txtsakuracat简介及应用实例及实例分析.txt简介及应用实例及实例分析....
opengl 实例实例实例实例实例opengl 实例实例实例实例实例
51单片机Proteus仿真实例 闪烁LED51单片机Proteus仿真实例 闪烁LED51单片机Proteus仿真实例 闪烁LED51单片机Proteus仿真实例 闪烁LED51单片机Proteus仿真实例 闪烁LED51单片机Proteus仿真实例 闪烁LED51单片机...
最新单片机仿真 8255并行口扩展实例最新单片机仿真 8255并行口扩展实例最新单片机仿真 8255并行口扩展实例最新单片机仿真 8255并行口扩展实例最新单片机仿真 8255并行口扩展实例最新单片机仿真 8255并行口扩展实例...
gpiogpio详解及应用实例gpio详解及应用实例gpio详解及应用实例gpio详解及应用实例gpio详解及应用实例gpio详解及应用实例gpio详解及应用实例gpio详解及应用实例gpio详解及应用实例gpio详解及应用实例gpio详解及应用...