1.publicclassTimeServerHandlerextendsIoHandlerAdapter{2.3.@Override4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.}publicvoidsessionCreated(IoSessionsession){//显示客户端的ip和端口System.out.println(session.getRemoteAddress().toString());}@OverridepublicvoidmessageReceived(IoSessionsession,Objectmessage)throwsException{Stringstr=message.toString();if(str.trim().equalsIgnoreCase(\"quit\")){session.close();//结束会话return;}Datedate=newDate();session.write(date.toString());//返回当前时间的字符串System.out.println(\"Messagewritten...\"+str);}定义一个类MinaTimeServer用来启动服务端:[java]viewplaincopyprint?
1.publicclassMinaTimeServer{2.3.4.5.6.7.8.9.10.11.12.13.端口号14.15.16.17.}acceptor.bind();//启动监听publicstaticvoidmain(String[]args)throwsIOException{acceptor=newNioSocketAcceptor();acceptor.getFilterChain().addLast(\"logger\",newLoggingFilter());//acceptor.getFilterChain().addLast(\"codec\ProtocolCodecFilter(newTextLineCodecFactory(Charset.forName(\"UTF-8\"))));//指定编码过滤器acceptor.getFilterChain().addLast(\"codec\",newProtocolCodecFilter(newTextLineCodecFactory()));//支持中文acceptor.setHandler(newTimeServerHandler());//指定业务逻辑处理器acceptor.setDefaultLocalAddress(newInetSocketAddress(PORT));//设置privatestaticIoAcceptoracceptor;privatestaticfinalintPORT=9123;//定义监听端口客户端:定义类TimeClientHandler来处理消息接收事件[java]viewplaincopyprint?
1.publicclassTimeClientHandlerextendsIoHandlerAdapter{2.3.4.5.6.7.8.9.10.11.}publicTimeClientHandler(){}@OverridepublicvoidmessageReceived(IoSessionsession,Objectmessage)throwsException{System.out.println(message);//显示接收到的消息}定义MinaTimeClient类用于连接服务端,并向服务端发送消息:[java]viewplaincopyprint?
1.publicclassMinaTimeClient{2.3.4.5.6.器7.8.9.10.11.12.13.14.开15.connector.dispose();connector.getFilterChain().addLast(\"codec\",newProtocolCodecFilter(newTextLineCodecFactory()));connector.setConnectTimeout(30);connector.setHandler(newTimeClientHandler());//设置事件处理器ConnectFuturecf=connector.connect(newInetSocketAddress(\"127.0.0.1\",9123));//建立连接cf.awaitUninterruptibly();//等待连接创建完成cf.getSession().write(\"hello\");//发送消息cf.getSession().write(\"quit\");//发送消息cf.getSession().getCloseFuture().awaitUninterruptibly();//等待连接断publicstaticvoidmain(String[]args){//创建客户端连接器.NioSocketConnectorconnector=newNioSocketConnector();connector.getFilterChain().addLast(\"logger\",newLoggingFilter());//connector.getFilterChain().addLast(\"codec\newProtocolCodecFilter(newTextLineCodecFactory(Charset.forName(\"UTF-8\"))));//设置编码过滤16.17.18.}}运行服务端server,再启动客户端MinaTimeClient,可看到进行通讯信息交互。另在MinaTimeServer类中增加下面方法进行客户端连接总数以及服务端主动向客户端发送信息等测试。[java]viewplaincopyprint?
1.publicstaticvoidstartMinaServer(){2.3.4.5.6.7.8.端口号9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.returnnum;intnum=acceptor.getManagedSessionCount();System.out.println(\"num:\"+num);/***获得客户端连接总数*@return*/publicstaticintgetConNum(){}try{acceptor.bind();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}//启动监听acceptor=newNioSocketAcceptor();acceptor.getFilterChain().addLast(\"logger\",newLoggingFilter());//acceptor.getFilterChain().addLast(\"codec\ProtocolCodecFilter(newTextLineCodecFactory(Charset.forName(\"UTF-8\"))));//指定编码过滤器acceptor.getFilterChain().addLast(\"codec\",newProtocolCodecFilter(newTextLineCodecFactory()));//支持中文acceptor.setHandler(newTimeServerHandler());//指定业务逻辑处理器acceptor.setDefaultLocalAddress(newInetSocketAddress(PORT));//设置27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.}/***向每个客户端发送消息*@return*/publicstaticvoidsendConMessage(){IoSessionsession;MapconMap=acceptor.getManagedSessions();Iteratoriter=conMap.keySet().iterator();while(iter.hasNext()){Objectkey=iter.next();session=(IoSession)conMap.get(key);session.write(\"\"+key.toString());}}
因篇幅问题不能全部显示,请点此查看更多更全内容