- 浏览: 305619 次
- 性别:
- 来自: 合肥
文章分类
最新评论
-
Xiaoanemy:
我怎么就是不行Error opening zip file o ...
javarebel不用再反复重启tomcat -
fly_hyp:
lvwenwen 写道相对hessian来说有其他什么优势?应 ...
一个很牛的架构组件(Dubbo) -
lvwenwen:
相对hessian来说有其他什么优势?
一个很牛的架构组件(Dubbo) -
dj4307665:
想了解下,相对hessian来说有其他什么优势?
一个很牛的架构组件(Dubbo) -
fly_hyp:
sweat89 写道怎么解决的啊?忘了。怎么说呢?自己写的代码 ...
Spring之恶心错误记录
我用mina写了一个Memcache服务端的通讯模拟程序
使用的是 mina-core-2.0.0-M1.jar
一共3各类
HypTestServerHandler
MinaUtilRun 启动类
TimeServerHandler
欢迎和我交流着方面的问题。
就是下面这些代码吧!
使用的是 mina-core-2.0.0-M1.jar
一共3各类
HypTestServerHandler
MinaUtilRun 启动类
TimeServerHandler
欢迎和我交流着方面的问题。
public class TimeServerHandler extends IoHandlerAdapter { public void exceptionCaught(IoSession session, Throwable t) throws Exception { // 出现异常的时候调用. t.printStackTrace(); session.close(); } public void messageReceived(IoSession session, Object msg) throws Exception { // 接收客户端新的消息的时候调用. String str = msg.toString(); if (str.trim().equalsIgnoreCase("quit")) { session.close(); return; } Date date = new Date(); session.write(date.toString()); System.out.println("Message written..."); } public void sessionCreated(IoSession session) throws Exception { // 当一个客户端连接到服务器的时候被调用. System.out.println("Session created..."); if (session.getTransportType() == TransportType.SOCKET) ((SocketSessionConfig) session.getConfig()) .setReceiveBufferSize(2048); session.setIdleTime(IdleStatus.BOTH_IDLE, 10); } }
public class MinaUtilRun { private static final int PORT = 11211; public static void test() throws Exception { ByteBuffer.setUseDirectBuffers(false); ByteBuffer.setAllocator(new SimpleByteBufferAllocator()); IoAcceptor acceptor = new SocketAcceptor(); SocketAcceptorConfig cfg = new SocketAcceptorConfig(); //创建一个与SocketAcceptor相关联的配置对象. cfg.getSessionConfig().setReuseAddress( true ); cfg.getFilterChain().addLast( "logger", new LoggingFilter() ); cfg.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new HypLineCodecFactory( Charset.forName( "GBK" )))); //acceptor.bind( new InetSocketAddress(PORT), new TimeServerHandler(), cfg);//绑定端口,处理对象和配置对象. acceptor.bind( new InetSocketAddress(PORT), new HypTestServerHandler(), cfg);//绑定端口,处理对象和配置对象. System.out.println("MINA Time server started."); } /** * @param args */ public static void main(String[] args) { try { test(); } catch (Exception e) { e.printStackTrace(); } } }
public class HypTestServerHandler extends IoHandlerAdapter { public void exceptionCaught(IoSession session, Throwable t) throws Exception { // 出现异常的时候调用. t.printStackTrace(); session.close(); } public void messageReceived(IoSession session, Object msg) throws Exception { // 接收客户端新的消息的时候调用. String stat = (String) session.getAttribute("stat"); String str = msg.toString(); JavaUtil.debugPrint("receive:" + str); if(stat.equals("GetCommand")){ if(str.equals("version")){ session.write("VERSION 1.2.2"); JavaUtil.debugPrint("response verison .... VERSION 1.2.2"); return; } if(str.startsWith("set ")){ String[] parts = str.split(" "); int dataSize = Integer.parseInt(parts[4]); JavaUtil.debugPrint("dataSize:" + dataSize); session.setAttribute("dataSize", dataSize); session.setAttribute("readSize", 0); session.setAttribute("stat", "readData"); session.setAttribute("dataBuf", new StringBuilder()); session.setAttribute("currentCmd", parts); } }else if(stat.equals("readData")){ int dataSize = (Integer)session.getAttribute("dataSize"); int readSize = (Integer)session.getAttribute("readSize"); StringBuilder buf = (StringBuilder)session.getAttribute("dataBuf"); if(buf.length() > 0){ buf.append("\r\n"); } buf.append(str); readSize += str.length() + 2; session.setAttribute("readSize", readSize); JavaUtil.debugPrint("read data:" + readSize + "/" +dataSize ); if(readSize == dataSize){ //处理命令 String[] parts = (String[])session.getAttribute("currentCmd"); System.out.println("buf.length():" + buf.length()); System.out.println(buf.toString()); session.write("STORED"); session.setAttribute("stat", "GetCommand"); } } //Date date = new Date(); //session.write(date.toString()); System.out.println("Message written..."); } public void sessionCreated(IoSession session) throws Exception { // 当一个客户端连接到服务器的时候被调用. System.out.println("Session created..."); if (session.getTransportType() == TransportType.SOCKET) ((SocketSessionConfig) session.getConfig()) .setReceiveBufferSize(2048); session.setIdleTime(IdleStatus.BOTH_IDLE, 10); session.setAttribute("stat", "GetCommand"); } }
评论
2 楼
fly_hyp
2010-01-03
xianglei 写道
new HypLineCodecFactory( Charset.forName( "GBK" ))) HypLineCodecFactory这个类呢?
就是下面这些代码吧!
/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ //这是从Mina的源代码摘过来的 package cn.sh.flyhyp.memcache.client.codec; import java.io.ByteArrayOutputStream; import java.io.PrintWriter; /** * A delimiter which is appended to the end of a text line, such as * <tt>CR/LF</tt>. * * @author The Apache MINA Project (dev@mina.apache.org) * @version $Rev: 714210 $, $Date: 2009-05-06 06:47:16 $ */ public class LineDelimiter { /** * the line delimiter constant of the current O/S. */ public static final LineDelimiter DEFAULT; static { ByteArrayOutputStream bout = new ByteArrayOutputStream(); PrintWriter out = new PrintWriter(bout); out.println(); DEFAULT = new LineDelimiter(new String(bout.toByteArray())); } /** * A special line delimiter which is used for auto-detection of * EOL in {@link MemcachedDecoder}. If this delimiter is used, * {@link MemcachedDecoder} will consider both <tt>'\r'</tt> and * <tt>'\n'</tt> as a delimiter. */ public static final LineDelimiter AUTO = new LineDelimiter(""); /** * The CRLF line delimiter constant (<tt>"\r\n"</tt>) */ public static final LineDelimiter CRLF = new LineDelimiter("\r\n"); /** * The line delimiter constant of UNIX (<tt>"\n"</tt>) */ public static final LineDelimiter UNIX = new LineDelimiter("\n"); /** * The line delimiter constant of MS Windows/DOS (<tt>"\r\n"</tt>) */ public static final LineDelimiter WINDOWS = CRLF; /** * The line delimiter constant of Mac OS (<tt>"\r"</tt>) */ public static final LineDelimiter MAC = new LineDelimiter("\r"); /** * The line delimiter constant for NUL-terminated text protocols * such as Flash XML socket (<tt>"\0"</tt>) */ public static final LineDelimiter NUL = new LineDelimiter("\0"); private final String value; /** * Creates a new line delimiter with the specified <tt>value</tt>. */ public LineDelimiter(String value) { if (value == null) { throw new NullPointerException("delimiter"); } this.value = value; } /** * Return the delimiter string. */ public String getValue() { return value; } @Override public int hashCode() { return value.hashCode(); } @Override public boolean equals(Object o) { if (!(o instanceof LineDelimiter)) { return false; } LineDelimiter that = (LineDelimiter) o; return this.value.equals(that.value); } @Override public String toString() { StringBuffer buf = new StringBuffer(); buf.append("delimiter:"); if (value.length() == 0) { buf.append(" auto"); } else { for (int i = 0; i < value.length(); i++) { buf.append(" 0x"); buf.append(Integer.toHexString(value.charAt(i))); } } return buf.toString(); } }
1 楼
xianglei
2010-01-03
new HypLineCodecFactory( Charset.forName( "GBK" ))) HypLineCodecFactory这个类呢?
发表评论
-
为什么中文编程项目失败率特别高?
2017-06-11 10:58 424不少中文编程语言都是创造者一时热情。觉得发明很伟大,想当然的 ... -
阿里大数据架构
2014-06-26 10:16 758阿里大数据架构 -
JDI Java程序员的高级玩具
2013-12-30 10:03 1487JDI,Java程序员的高级玩 ... -
异构云操作系统需要具备的18总特性和3类支持
2013-12-24 14:07 1086什么是云操作系统? 相对于单机操作系统,网络操作系统。至少 ... -
安全云存储系统技术总结
2013-12-05 16:15 1036阅读了一下《计算机研究与发展-安全云存储系统与关键技 ... -
大型团队Java项目日志自由激活的设计
2013-11-25 13:40 853大型团队Java项目日志自由激活的设计 摘要: ... -
可以用 JavaScript 来写的应用,最终都会用 JavaScript 来写
2013-11-05 17:04 871这句话我喜欢。 凡是可以用 JavaScrip ... -
评价挺高的Java Web Profile 开源工具 Jwebap
2013-11-04 09:19 740想法很不错,作者也很努力,评价也不错。不过从历史的角 ... -
playframework 非常不错的web开发框架
2013-09-18 15:34 892playframework 非常不错的web开发 ... -
knockoutjs 非常不错的js mvc 框架
2013-09-18 15:32 696knockoutjs 非常不错的js mvc 框架 ... -
一个企业级的自动化工具gradle
2013-09-02 16:08 811还没有用过,理念不错,我喜欢。值得研究一下。 ... -
activeJDBC现在很流行的一个JDBC应用
2013-09-02 16:05 883activeJDBC现在很流行的一个JDBC应用 ... -
如何解决 emma 在 JDK7 下 java.lang.ClassFormatError 错误
2013-09-02 16:04 758JVM 启动时可以加入 “-XX:-UseSplit ... -
10 个非常重要的 HotSpot JVM 参数
2013-08-17 20:42 8231) 跟 Java 堆大小相关的 JVM 内存参数 下 ... -
A JSP to print all the stacks
2013-06-19 17:29 870A JSP to print all the stacks ... -
Ubuntu11.10下解决 jmap等jdk工具attach pid错误
2013-05-13 18:05 8471.错误案例 java] view plaincop ... -
对Emma的使用进行一些总结
2013-01-06 17:47 1007对Emma的使用进行一些总结 写道 首先将 ... -
一个很牛的架构组件(Dubbo)
2012-12-27 17:52 2713这是一个在阿里内部广泛使用的,管理SOA组件间互相调用的基本框 ... -
Open Id and Open Auth
2011-05-31 10:00 1448Open Id and Open Auth 1.a ... -
redis 初学指导
2010-06-26 23:08 1341如果你初学或者对redis很有兴趣下面的文字可能会对你有帮助 ...
相关推荐
Mina(MINA,全称Java Minimal Asynchronous Network Infrastructure)是一个高性能、轻量级的网络应用框架,由Apache软件基金会开发。它主要被用于构建基于TCP/IP和UDP/IP协议的应用,如HTTP服务器、FTP服务器、DNS...
Mina(Java Minimal Asynchronous Network Library)是一个用Java编写的网络通信库,主要用于构建高性能、高可用性的网络服务器。它提供了一种简单而强大的API,用于处理TCP/IP和UDP/IP协议,以及SSL/TLS加密的网络...
Mina 是一个强大的开源框架,主要用于构建网络应用,如服务器和客户端。在Java环境中,它提供了高效的、事件驱动的网络应用程序框架,支持TCP和UDP协议,适用于开发高性能、高并发的网络服务。在这个"mina 长连接 ...
Apache Mina是一个高度可扩展的网络通信框架,它允许开发者创建高性能、高效率的服务端和客户端应用程序。在Java世界中,Mina以其简洁的API和灵活性而受到青睐,尤其适用于处理大量的并发连接,如TCP/IP和UDP协议。...
在服务端,你需要创建一个基于Mina的SocketAcceptor,监听特定的端口(如描述中提到的"端口应该是对应好的")。服务端的核心类是`ServerBootstrap`,用于配置服务器的行为和绑定端口。启动服务端时,你可以运行`demo...
标题中的“mina2推送demo服务端”指的是使用Apache Mina框架构建的一个推送服务端的示例项目。Apache Mina是一个开源的Java网络应用框架,它简化了开发高性能和高可用性的网络服务器和客户端应用程序的工作。Mina...
MINA(Multipurpose Infrastructure for Network Applications)是Apache软件基金会的一个开源项目,提供了一套高度可扩展和高性能的网络应用程序框架,用于构建服务器和客户端应用。它简化了网络编程,特别是TCP/IP...
在这个"apache mina-spring 服务端程序"项目中,Mina和Spring被整合在一起,创建了一个高效的服务端程序。这样的整合允许开发者利用Spring的强大功能来管理服务端的生命周期,配置网络连接,以及处理业务逻辑。...
在Mina中,服务端通常通过创建一个Acceptor来监听特定的端口,等待客户端的连接请求。Acceptor会处理连接建立、数据传输和连接关闭等网络事件。服务端的核心组件是IoHandler,它定义了对网络事件的处理方法,如...
Apache MINA(Multi-purpose Infrastructure for Network Applications)是一个用于构建高性能、跨平台网络应用程序的Java框架。MINA 提供了一个高级的网络应用编程接口 (API),它抽象了底层的传输层,使得开发者...
“服务端基于MINA2的UDP双向通信Demo演示(MINA2服务端)” 这个标题表明这是一个使用MINA2框架在服务端实现的UDP(User Datagram Protocol)双向通信的示例代码。MINA2是一个开源的Java网络应用程序框架,它简化了...
标题中提到的"mina2服务端客户端实例"是指使用Apache MINA 2版本创建的一个工作示例,该示例包含了服务端和客户端的完整代码,旨在帮助开发者理解如何在实际项目中运用MINA进行网络通信。通过导入Eclipse这样的集成...
mina框架是Apache组织开发的一个网络通信框架,它基于Java NIO(非阻塞I/O)构建,用于简化网络编程,尤其是TCP和UDP协议的应用开发。本项目提供了服务端和客户端的示例,使得开发者能够更好地理解和应用MINA框架。 ...
Spring 和 Mina 结合使用可以构建高性能的网络通信应用,而Spring MVC 是Spring 框架的一个模块,专门用于处理Web请求。在这个"spring+mina实现http接口服务端通信客户端"的项目中,我们将深入探讨如何整合这两个...
【标题】:“一个源代码学习服务端,基于Mina” Mina(JavaMinimal Asynchronous Network Library)是一个开源的网络通信框架,由Apache软件基金会维护。它提供了高度可扩展且低级别的网络应用程序接口,用于构建高...
mina_tcp服务端需要jar包.zip这个压缩包是针对Apache MINA框架实现TCP长连接服务端的一个资源集合。Apache MINA(Multipurpose Infrastructure for Network Applications)是一个高性能、异步事件驱动的网络应用程序...
在IT行业中,网络通信是应用程序之间交互的基础,而MINA(Multi-purpose Infrastructure for Network Applications)是一个高性能、异步事件驱动的网络应用框架,主要用于构建服务器端应用程序。本实例将探讨如何...
在服务端,Mina提供了一个Acceptor,它是监听特定端口并处理连接请求的对象。在创建Acceptor时,我们需要指定一个处理器,该处理器负责处理接收到的数据。在这个案例中,服务端可能创建了一个`MyProtocolDecoder`和`...
"mina mmorpg服务端源码"是一个专注于游戏服务器端开发的项目,其核心技术是基于Apache Mina框架,并采用了AMF3编解码格式,这为高效的数据传输和游戏逻辑处理提供了坚实的基础。 Apache Mina是一个开源的网络通信...
**Android使用Mina与服务器通信Demo** Mina(Minimum Asynchronous Network)是一个高度可扩展的、高...对于初学者,这是一个很好的起点,通过阅读和运行代码,可以深入理解Mina在网络通信中的工作原理和使用方法。