- 浏览: 28068 次
- 性别:
- 来自: 重庆
-
最新评论
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 如何使用进度条控件 ...
QT5开发及实例配套[源代码] Qt是诺基亚公司的C++可视化开发平台,本书以Qt 5作为平台,每个章节在简单介绍开发环境的基础上,用一个小实例,介绍Qt 5应用程序开发各个方面,然后系统介绍Qt 5应用程序的开发技术,...
### SQL Server 2008 R2 添加实例的详细步骤 #### 一、概述 SQL Server 2008 R2 是一款强大的关系型数据库管理系统,广泛应用于企业级数据管理和处理场景。对于需要在同一台服务器上运行多个独立的SQL Server环境...
本实例集合将深入探讨J2EE的核心概念和技术,帮助开发者更好地理解和应用J2EE。 首先,J2EE的核心组件包括Servlet、JavaServer Pages (JSP)、JavaBean、EJB(Enterprise JavaBeans)、JMS(Java Message Service)...
第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 ...
opengl 实例实例实例实例实例opengl 实例实例实例实例实例
java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象...
《C++编程实例100篇》是一本深入浅出的C++编程教程,它以实践为主导,通过丰富的实例帮助学习者掌握C++语言的基础和核心概念。这本书的每个实例都精心设计,旨在帮助初学者和有经验的开发者巩固和提升C++编程技能。 ...
本"JS实例大全"聚焦于展示JavaScript在实际应用中的各种功能和技巧,帮助开发者更好地理解和掌握这门语言。 一、基础语法与数据类型 JavaScript的基础语法包括变量声明(var、let、const)、数据类型(如字符串、...
最新单片机仿真 8255并行口扩展实例最新单片机仿真 8255并行口扩展实例最新单片机仿真 8255并行口扩展实例最新单片机仿真 8255并行口扩展实例最新单片机仿真 8255并行口扩展实例最新单片机仿真 8255并行口扩展实例...
githubsakuracat简介及应用实例及实例分析.txt简介及应用实例及实例分析.txtsakuracat简介及应用实例及实例分析.txt简介及应用实例及实例分析.txtsakuracat简介及应用实例及实例分析.txt简介及应用实例及实例分析....
MCGS高级教程实例模板MCGS高级教程实例模板MCGS高级教程实例模板MCGS高级教程实例模板MCGS高级教程实例模板MCGS高级教程实例模板MCGS高级教程实例模板MCGS高级教程实例模板MCGS高级教程实例模板MCGS高级教程实例模板...
51单片机Proteus仿真实例 闪烁LED51单片机Proteus仿真实例 闪烁LED51单片机Proteus仿真实例 闪烁LED51单片机Proteus仿真实例 闪烁LED51单片机Proteus仿真实例 闪烁LED51单片机Proteus仿真实例 闪烁LED51单片机...
下面我们将围绕"LabVIEW 55个经典实例"这一主题,探讨这些实例可能涵盖的知识点,以及它们如何帮助用户提升LabVIEW技能。 1. **基础编程概念**:这55个实例可能会包含基础的编程概念,如循环(For Loop, While Loop...
gpiogpio详解及应用实例gpio详解及应用实例gpio详解及应用实例gpio详解及应用实例gpio详解及应用实例gpio详解及应用实例gpio详解及应用实例gpio详解及应用实例gpio详解及应用实例gpio详解及应用实例gpio详解及应用...
《Zemax设计实例500.zip》是一款包含大量光学设计实例的资源包,对于学习和提升光学设计技能的初学者及专业人士来说极具价值。Zemax是业界广泛使用的光学设计软件,它提供了强大的优化和分析工具,使得复杂光学系统...