Server代码
package simple.socket; import java.io.IOException; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.nio.ByteBuffer; import java.nio.channels.*; import java.util.Iterator; import java.util.Set; /** * Created by banxia on 16/10/12. */ public class UseNioSocket { public static void main(String[] args) throws IOException { // 创建一个selector 对象 Selector selector = Selector.open(); ServerSocketChannel ssc = ServerSocketChannel.open(); ssc.configureBlocking(false); ssc.socket().bind(new InetSocketAddress(8888)); ssc.register(selector, SelectionKey.OP_ACCEPT); ByteBuffer buffer = ByteBuffer.allocate(1024); System.out.println("服务已经启动端口:" + 8888); while (true) { int selectNum = selector.select(); System.out.println("selectNum=" + selectNum); if (selectNum <= 0) { continue; } // 获取 Iteratorit = selector.selectedKeys().iterator(); while (it.hasNext()) { SelectionKey key = it.next(); if (key.readyOps() == SelectionKey.OP_ACCEPT) { // 接收 accept ServerSocketChannel channel = (ServerSocketChannel) key.channel(); SocketChannel accept = channel.accept(); accept.configureBlocking(false); System.out.println("接收客户端:" + accept.socket().getInetAddress().getHostAddress() + ":" + accept.socket().getPort()); accept.register(selector, SelectionKey.OP_READ); it.remove(); } else { SocketChannel sc = (SocketChannel) key.channel(); System.out.println("接收客户端:" + sc.socket().getInetAddress().getHostAddress() + ":" + sc.socket().getPort() +"开始处理..."); while (true) { buffer.clear(); long l = sc.read(buffer); if (l <= 0) { break; } System.out.print("."); buffer.flip(); sc.write(buffer); } System.out.print("\n"); it.remove(); System.out.println("接收客户端:" + sc.socket().getInetAddress().getHostAddress() + ":" + sc.socket().getPort() +"处理完成处理..."); } } } } }
![php中文网最新课程二维码](/static/images/article_wechat2021.jpg?1111)
声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
网友评论
文明上网理性发言,请遵守 新闻评论服务协议
我要评论