nio/mina(一) nio基本通信
来源:互联网 发布:常见量化交易算法 编辑:程序博客网 时间:2024/06/01 10:29
服务端:
Server.java
package com.nafio.nio1;import java.io.IOException;import java.net.*;import java.nio.*;import java.nio.channels.*;import java.util.*;public class Server{ServerSocketChannel ssc;public void start(){try{Selector selector = Selector.open();ServerSocketChannel ssc = ServerSocketChannel.open();ssc.configureBlocking(false);ServerSocket ss = ssc.socket();InetSocketAddress address = new InetSocketAddress(9988);ss.bind(address);ssc.register(selector, SelectionKey.OP_ACCEPT);System.out.println("服务器_端口注册完毕!");while (true){System.out.println("服务端_主循环--------->");selector.select();//nafio info 这里每次是阻塞的//System.out.println("测试select阻塞");Set<SelectionKey> selectionKeys = selector.selectedKeys();Iterator<SelectionKey> iter = selectionKeys.iterator();ByteBuffer echoBuffer = ByteBuffer.allocate(20);SocketChannel sc;while (iter.hasNext()){System.out.println("服务器_测试iteretor包含数量");SelectionKey key = iter.next();if ((key.readyOps() & SelectionKey.OP_ACCEPT) == SelectionKey.OP_ACCEPT){ServerSocketChannel subssc = (ServerSocketChannel) key.channel();sc = subssc.accept();sc.configureBlocking(false);sc.register(selector, SelectionKey.OP_READ);iter.remove();System.out.println("服务器_有新连接:" + sc);}else if ((key.readyOps() & SelectionKey.OP_READ) == SelectionKey.OP_READ){sc = (SocketChannel) key.channel();while (true){echoBuffer.clear();int a;try{a = sc.read(echoBuffer);}catch (Exception e){e.printStackTrace();break;}if (a == -1)break;if (a > 0){byte[] b = echoBuffer.array();System.out.println("服务器_接收数据<--- " + new String(b));echoBuffer.flip();sc.write(echoBuffer);System.out.println("服务器_返回数据---> " + new String(b));}}sc.close();System.out.println("服务器_连接结束");System.out.println("=============================");iter.remove();}}}}catch (Exception e){e.printStackTrace();}}public static void main(String[] args) throws IOException {Server server = new Server();server.start();}}
客户端
Client.java
package com.nafio.nio1;import java.io.IOException;import java.net.*;import java.nio.*;import java.nio.channels.*;public class Client{public void start(){try{//SocketAddress address = new InetSocketAddress("localhost",55555);SocketAddress address = new InetSocketAddress("localhost",9988);SocketChannel client=SocketChannel.open(address);client.configureBlocking(false);String a="一二三四五六七八九十";ByteBuffer buffer=ByteBuffer.allocate(20);//by nafio 20_byte 10_中文buffer.put(a.getBytes());buffer.clear();int d=client.write(buffer);System.out.println("客户端_发送数据---> "+new String(buffer.array()));while(true){buffer.flip();int i=client.read(buffer);if(i>0){byte[] b=buffer.array();System.out.println("客户端_接收数据---> "+new String(b));client.close();System.out.println("客户端_连接关闭!");break;}}}catch(Exception e){e.printStackTrace();}}public static void main(String[] args) throws IOException {Client client = new Client();client.start();}}
- nio/mina(一) nio基本通信
- Mina-tcp与NIO通信问题
- nio基本使用一
- nio/mina(四)客户端socket与mina服务端通信
- Apache MINA NIO模型
- Mina ....包装NIO
- java NIO: MINA, Netty
- mina nio 示例
- Apache MINA NIO模型
- Nio Mina框架
- Java nio epoll mina
- Android 使用Mina的Nio实现客户端服务器通信
- NIO框架之MINA源码解析(五):NIO超级陷阱和使用同步IO与MINA通信
- NIO框架之MINA源码解析(五):NIO超级陷阱和使用同步IO与MINA通信
- nio socket 及其开源框架MINA学习总结(一)
- nio socket 及其开源框架MINA学习总结(一)
- nio socket 及其开源框架MINA学习总结(一)
- NIO框架之MINA源码解析(一):背景
- 【值得珍藏】2012 PHP热门资料64个+经典源码50个——下载目录
- 手把手教你把Vim改装成一个IDE编程环境(图文)
- 在线的SA 绘图工具-Mockups
- 使用XML Schema验证XML数据输入
- 冒泡排序
- nio/mina(一) nio基本通信
- hdu4119-Isabella's Message
- Firefox 自动化插件开发—binary xpcom组件从3.6对应升级到4.0以上
- 修改eclipse启动的Tomcat内存
- 嵌入式C编程基础
- .net 获取一周星期一
- 查看AIX主机上的设备
- Ajax跨域请求
- 初识coffeeScript