MINA2.0用户手册中文版--第二章 第五节 UDP客户端实例

发布时间:2016-12-6 18:14:58 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"MINA2.0用户手册中文版--第二章 第五节 UDP客户端实例",主要涉及到MINA2.0用户手册中文版--第二章 第五节 UDP客户端实例方面的内容,对于MINA2.0用户手册中文版--第二章 第五节 UDP客户端实例感兴趣的同学可以参考一下。

这一节我们将看一下上一节中提到的UDP服务器的客户端代码: 实现一个客户端需要做如下: 创建一个Socket并连接到服务器设置操作处理器IoHandler收集可用内存发送数据到服务器 我们来看下包org.apache.mina.example.udp.client中的代码MemMonClient.java,前面几行代码很简洁: connector = new NioDatagramConnector(); connector.setHandler( this ); ConnectFuture connFuture = connector.connect( new InetSocketAddress("localhost", MemoryMonitor.PORT )); 这里创建了一个连接器NioDatagramConnector,设置了处理程序,并且连接到了指定的服务器。这里有个小问题,就是你必须设置对象InetSocketAddress中的主机地址,否则似乎无法正常工作。这个例子主要是在Windows XP上编写和测试的,在其他系统上可能会有所不同。接下来,我们就等待确认客户端已连接到了服务器上,一旦确认连接成功,我们就可以向服务器传送数据了,下面就是写数据的代码了: connFuture.addListener( new IoFutureListener(){ public void operationComplete(IoFuture future) { ConnectFuture connFuture = (ConnectFuture)future; if( connFuture.isConnected() ){ session = future.getSession(); try { sendData(); } catch (InterruptedException e) { e.printStackTrace(); } } else { log.error("Not connected...exiting"); } } }); 此段代码添加了一个监听器到ConnectorFuture对象,当收到一个客户端已经连接上的回调之后,就可以开始写数据到服务器了,写操作是通过方法sendDate()来完成的,以下就是该方法的代码: private void sendData() throws InterruptedException { for (int i = 0; i < 30; i++) { long free = Runtime.getRuntime().freeMemory(); IoBuffer buffer = IoBuffer.allocate(8); buffer.putLong(free); buffer.flip(); session.write(buffer); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); throw new InterruptedException(e.getMessage()); } } } 该方法每隔一秒就将客户端程序空余内存数发送给服务器,共进行30次。程序分配了一个足够大的IoBuffer来存放一个长整型变量,之后将空余内存数放入该缓冲区,然后将该缓冲区的当前位置通过方法flip()重置,最后传送到服务器端。 UDP客户端就完成了。

上一篇:【韩信点兵 算法总结】
下一篇:算法题目 总结 分析 发散

相关文章

相关评论