- 浏览: 16548 次
最新评论
应用mina的例子做了一些修改,但有关于连接数的问题
- 博客分类:
- 技术杂绘
应用mina的例子做了一些修改,但有关于连接数的问题
2010年10月14日
修改后code如下,每个类都是非常简洁,请大家耐心看完
~~~~~~~~~~~~~~~~~~client端~~~~~~~~~~~~~~~~~~~~~~~~~~~
package com.javake.mina.sampleserver;
import java.net.InetSocketAddress;
import java.util.concurrent.Executors;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.filterchain.DefaultIoFilterCh ainBuilder;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCode cFactory;
import org.apache.mina.filter.executor.ExecutorFilter;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketConn ector;
public class MainClient
{
public static void main(String[] args) throws Exception
{
// 创建IO连接器
NioSocketConnector connector = new NioSocketConnector();
// 创建接收数据的过滤器
DefaultIoFilterChainBuilder chain = connector.getFilterChain();
//设定这个过滤器将一行一行(/r/n)的读取数据
chain.addLast("myChin",new ProtocolCodecFilter(new TextLineCodecFactory()));
chain.addLast("threadPool", new ExecutorFilter(Executors.newCachedThreadPool()));
//设定服务器端的消息处理器:一个 SamplMinaServerHandler 对象,
connector.setHandler(new SamplMinaClientHandler());
// Set connect timeout.
connector.setConnectTimeoutMillis(3000);
//连结到服务器:
ConnectFuture cf=null;
for(int i=1;i等待异步执行的结果返回
cf.awaitUninterruptibly();
}
//等待连接断开
cf.getSession().getCloseFuture().awaitUninterrupti bly();
//停止客户端
connector.dispose();
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~clientHandler~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~
package com.javake.mina.sampleserver;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.core.service.IoHandlerAdapter;
public class SamplMinaClientHandler extends IoHandlerAdapter
{
public void messageSent(IoSession session, Object message)throws Exception
{
//发送信息成功之后调用,不能用于发信息
}
//当一个客户端连结进入时
public void sessionOpened(IoSession session) throws Exception
{ //向服务器发送一个空字符
session.write(" ");
}
//当一个客户端关闭时
public void sessionClosed(IoSession session)
{
System.out.println("one Clinet Disconnect !");
}
//当客户端发送的消息到达时:
public void messageReceived(IoSession session, Object message)throws Exception
{
//什么也不做
}
}
~~~~~~~~~~~~~~~~~~server端~~~~~~~~~~~~~~~~~~~~~~~~~~~
package com.javake.mina.sampleserver;
import java.net.InetSocketAddress;
import org.apache.mina.core.filterchain.DefaultIoFilterCh ainBuilder;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCode cFactory;
import org.apache.mina.filter.logging.LogLevel;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.SocketAcceptor;
import org.apache.mina.transport.socket.nio.NioSocketAcce ptor;
public class MainServer
{
public static void main(String[] args) throws Exception
{
//创建一个非阻塞的Server端Socket,用NIO IO接受器
SocketAcceptor acceptor = new NioSocketAcceptor();
//创建接收数据的过滤器
DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
//设定这个过滤器将一行一行(/r/n)的读取数据
chain.addLast("myChin", new ProtocolCodecFilter(new TextLineCodecFactory()));
//设定服务器端的消息处理器:一个SamplMinaServerHandler对象,
acceptor.setHandler(new SamplMinaServerHandler());
// 服务器端绑定的端口
int bindPort=3333;
//绑定端口,启动服务器
acceptor.bind(new InetSocketAddress(bindPort));
System.out.println("Mina Server is Listing on:= " + bindPort);
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~serverHandler~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~
package com.javake.mina.sampleserver;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.core.service.IoHandlerAdapter;
public class SamplMinaServerHandler extends IoHandlerAdapter
{
int i=0;
//当一个客端端连结进入时
public void sessionOpened(IoSession session) throws Exception
{ //显示有多个少客户端连接过来
System.out.println(++i);
}
//当一个客户端关闭时
public void sessionClosed(IoSession session)
{
System.out.println("one Clinet Disconnect !");
}
//当客户端发送的消息到达时:
public void messageReceived(IoSession session, Object message)throws Exception
{}
}
================解决方案
在网上找到方法, 虽然出的问题和我的有一点差别,他的是JVM_Bind,我的是connection
但按他修改注册表的做了
http://www.360doc.com/content/09/1031/12/10610_814 5493.shtml
1. 启动注册表编辑器。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\Tcpip\Parameters
2. 新建
值名称:MaxUserPort
值类型: DWORD
值数据: 65534(用十进制的方法写进去就可以,如果是十六进制,是FFFE,因为4个F是65535嘛)
有效范围: 5000 - 65534 (十进制)
默认: 0x1388 5000 (十进制)
新建
值名称:TCPTimedWaitDelay
值类型: DWORD
值数据: 0000001e(也就是30,不行可以用WINDOWS计算器,很方便,这个表示TIME_WAIT的秒数)
连接数可以飘到1.6W个,也算差不多了,不知还有没有方法再上一层楼。
问题二
通过Mina既可以传送字符串.又可以传输文件
可以自己定义一个协议啊,很简单的比如
数据包总长度+字符串字节长度+字符串+字节流长度+字节流数据
就可以啦,解析起来也很方便
http://mina.apache.org/tutorial-on-protocolcodecfi lter-for-mina-2x.html
发表评论
-
VC中使用自定义消息在进程间通讯
2012-01-20 00:50 1428VC中使用自定义消息在进程间通讯 2011年06月14日 ... -
重叠IO 通信模型,函数记录。
2012-01-20 00:50 910重叠IO 通信模型,函数记录。 2010年12月07日 ... -
apache2 安装与配置
2012-01-20 00:50 1067apache2 安装与配置 2010年11月09日 v0 ... -
Heritrix源码分析(二) 配置文件order.xml介绍
2012-01-20 00:50 638Heritrix源码分析(二) 配 ... -
Windows系统的Regsvr32
2012-01-17 01:08 806Windows系统的Regsvr32 2011 ... -
i9000
2012-01-17 01:08 906i9000 2011年03月26日 *#0*#工程测试, ... -
as3面试题
2012-01-17 01:08 647as3面试题 2011年09月13日 ... -
regsvr32用法集合
2012-01-17 01:08 1000regsvr32用法集合 2011年12月02日 R&a ... -
pcb layout 4
2012-01-15 19:49 747pcb layout 4 2011年12月30日 1.一 ... -
写给Linux内核新手-关于Linux内核学习的误区(转自ChinaUnix.net)
2012-01-15 19:49 994写给Linux内核新手-关于L ... -
C# asp.net获取外网IP
2012-01-15 19:49 1391C# asp.net获取外网IP 2011 ... -
发烧高端版v2.0版本
2012-01-15 19:49 765发烧高端版v2.0版本 4小时前 CPU AMD FX- ... -
compass搜索
2012-01-11 12:02 671compass搜索 2011年07月01日 compas ... -
apache mina error dead lock: iofuture.await()-yidianfengfan-iteye技术网站
2012-01-11 12:02 1120apache mina error dead lock: io ... -
sqlcmd错误的解决方法-bluedusk-iteye技术网站
2012-01-11 12:02 998sqlcmd错误的解决方法-bluedusk-iteye技术网 ... -
web framework
2012-01-11 12:02 593web framework 2011年07月01日 w ... -
GAE with spring实践经验
2012-01-11 12:02 704GAE with spring实践经验 2011年07月01 ...
相关推荐
mina例子,服务端和客户端,MinaTimeServer是启动服务端,然后运行MinaClient就能看到结果了
mina连接,mina心跳连接,mina断线重连。其中客户端可直接用在android上。根据各方参考资料,经过自己的理解弄出来的。CSDN的资源分太难得了。
mina服务端工程例子包括相关源码,实现了socket 的nio
apahce的MINA例子,包含了与spring的整合
最近做rfid读写,C#和java都用udp不用厂家的动态库,udp自己写也简单,但是试了一下Apache mina ,接收的不是string,二十byte[] 数组,简单实现了UDP,网上也有例子,但是不是我要的。可用。
Mina长连接短连接实例包含Minaclient工程和MinaHost工程,另外还有几个文档,相信对理解这两个工程有很大的帮助
mina的入门例子
MINA入门实例,实现长连接,短连接通讯。
一个应用mina框架的实例,包含源码!!!!!!!!!!!!
Mina官网的时间服务例子,附有运行说明,完全能够运行。
mina-2.0.0-M6.zip源码+例子,学些mina必备哦
mina 通讯 实现server端与基于Android系统的client端通讯
apache mina性能测试实例 四台客户端机器,服务器能跑到1w。mina的jar包自己去下,我上传的其他资源里也有。
Mina通信框架应用示例,学会运用Mina 框架
这是个使用mina的例子,需要的可以下来看看
包含了官方例子中所有相关的jar包:log4j, mina-core, mina-integration-jmx, mina-statemachine, org.springframework.context, slf4j-api, slf4j-log4j12等
Apache MINA是一个网络应用程序框架,本实例在android下 进行串口通讯的例子
使用mina实现rpc调用.使用参考http://blog.csdn.net/stevexk/archive/2008/07/23/2697907.aspx
使用MINA实现长连接
2.mina若有空闲连接则使用已有连接,若无则新建mina连接; 3.mina空闲连接超过保活时间25分钟后,自动删除; 4.mina发送指令后,接收指定时长内收到的消息; <groupId>org.apache.mina <artifactId>mina-core ...