timeserviceselect.java
来自「java nio 编程一个实例子.服务端程序」· Java 代码 · 共 63 行
JAVA
63 行
package com.ronsoft.books.nio.channels;import java.nio.ByteBuffer;import java.nio.channels.DatagramChannel;import java.nio.channels.Selector;import java.nio.channels.SelectionKey;import java.net.InetSocketAddress;public class TimeServiceSelect extends TimeService{ private Selector selector; private long giveup; public TimeServiceSelect (int port, long timeout) throws Exception { super (port); this.giveup = System.currentTimeMillis() + timeout; this.selector = selector.open(); this.channel.configureBlocking (false); this.channel.register (this.selector, SelectionKey.OP_READ); } // this version never times out protected InetSocketAddress receivePacket (DatagramChannel channel, ByteBuffer buffer) throws Exception {System.out.println ("In TimerServiceSelect receivePacket"); buffer.clear(); while (true) { InetSocketAddress sa; sa = (InetSocketAddress) channel.receive (buffer); if (sa != null) { return (sa); } long sleepTime = giveup - System.currentTimeMillis(); if (sleepTime < 1) { return (null); // time's up }System.out.println ("Selecting for " + (sleepTime / 1000) + " seconds"); selector.select (sleepTime); } } public static TimeService newInstance (int listenPort) throws Exception {System.out.println ("in newInstance"); return (new TimeServiceSelect (listenPort, 5)); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?