Java NIO通信简单实例
来源:互联网 发布:hebe掰弯selina知乎 编辑:程序博客网 时间:2024/06/04 17:49
此例子使用socketchannel和serversocketchannel,把服务端的一个字符串传递到客户端,并且在客户端输出
客户端:
public class Client01 {SocketChannel client;Selector selector;ByteBuffer buffer;public Client01() throws IOException {client = SocketChannel.open(new InetSocketAddress("127.0.0.1",9800));selector = Selector.open();client.configureBlocking(false);client.register(selector,SelectionKey.OP_READ);buffer = ByteBuffer.allocate(5555);connect();}/* * 连接服务端,并且把传递过来的数据读取到缓冲区 */public void connect() throws IOException {while (true) {if (selector.select()>0) {Iterator<SelectionKey> ikeys = selector.selectedKeys().iterator();while (ikeys.hasNext()) {SelectionKey selectionKey = ikeys.next();if (selectionKey.isReadable()) {reads();}ikeys.remove();}}}}public void reads() throws IOException {buffer.clear();client.read(buffer);buffer.flip();System.out.println(new String(buffer.array() , 0 , buffer.limit() , "UTF-8"));}public static void main(String[] args) throws IOException {Client01 client01 = new Client01();}}
服务端:
public class Server01 {ServerSocketChannel server;Selector selector;ByteBuffer buffer;/* * 构造函数,初始化各个变量,对ServerSocketChannel进行注册 */public Server01() throws IOException {selector = Selector.open();server = ServerSocketChannel.open();server.configureBlocking(false);//设置为非阻塞模式server.socket().bind(new InetSocketAddress(9800));server.register(selector, SelectionKey.OP_ACCEPT);buffer = ByteBuffer.allocate(25550);openserver();}/* * 此方法把一个字符串传递给客户端 */public void openserver() throws IOException {System.out.println("服务器开启");while (true) {if (selector.select()>0) {Iterator<SelectionKey> ikeys = selector.selectedKeys().iterator();while (ikeys.hasNext()) {SelectionKey selectionKey = ikeys.next();if (selectionKey.isAcceptable()) {ServerSocketChannel serverSocketChannel = (ServerSocketChannel) selectionKey.channel();SocketChannel socketChannel = serverSocketChannel.accept();send(socketChannel, "7758258");}ikeys.remove();}}}}/* * 传递数据到客户端函数 */public void send(SocketChannel socketChannel,String string) throws IOException {buffer.clear();//清除缓冲区,在使用一系列通道读取或放置 操作填充此缓冲区之前调用此方法buffer.put(string.getBytes());buffer.flip();//反转此缓冲区,在一系列通道读取或放置 操作之后,调用此方法为一系列通道写入或相对获取 操作做好准备socketChannel.write(buffer);}public static void main(String[] args) throws IOException {Server01 server01 = new Server01();}}
0 0
- Java NIO通信简单实例
- NIO Socket 简单通信实例
- java NIO socket 通信实例
- java nio socket简单实例
- 基于Java NIO 的socket通信实例
- Java review--NIO实例:实现服务端和客户端的简单通信
- java nio socket通信简单入门示例
- Java NIO简单实例(入门)
- java nio实现非阻塞Socket通信实例
- Java NIO通信
- Java Nio通信
- Java NIO Socket通信
- Java NIO Socket通信
- Java NIO Socket通信
- java NIO Socket通信
- Java NIO Socket通信
- Java Swing与网络通信简单实例
- java 网络通信socket实现简单实例
- NUMA架构的CPU – 你真的用好了么?
- HDOJ 5101 Select(upper_bound的运用)
- 闭包的理解
- 论文笔记:Feature Pyramid Networks for Object Detection
- 4-5 求自定类型元素的最大值
- Java NIO通信简单实例
- 什么是I帧,P帧,B帧
- 【C#】CSV文件读写
- java &与&& |与||的区别
- Mybatis的sqlMapConfig.xml中mappers标签
- 540. Single Element in a Sorted Array
- php-简单后台图书管理系统-数据库表的创建以及pdo方式数据库的封装工具类01
- Python 解决UnicodeEncodeError: 'ascii' codec can't encode characters in position问题
- 002存储基础原理笔记