广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

惠州​Java非阻塞套接字通道回显客户端程序是什么?_北大青鸟IT学校

作者:邓华发布时间:2021-05-13分类:Java技术浏览:685


导读:Java是现在非常主流的编程语言之一,很多人想转行学习Java。那么,​Java非阻塞套接字通道回显客户端程序是什么?下面就让我们一起来看看惠州北大青鸟老师是怎么回答的。

Java是现在非常主流的编程语言之一,很多人想转行学习Java。那么,Java非阻塞套接字通道回显客户端程序是什么?下面就让我们一起来看看惠州北大青鸟老师是怎么回答的。

实例

非阻塞套接字通道回显客户端程序

import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.InetAddress;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.CharBuffer;import java.nio.channels.SelectionKey;import java.nio.channels.Selector;import java.nio.channels.SocketChannel;import java.nio.charset.Charset;import java.nio.charset.CharsetDecoder;import java.util.Iterator;import java.util.Set;/*from www.w3cschool.cn*/public class Main {  static BufferedReader userInputReader = null;  public static boolean processReadySet(Set readySet) throws Exception {
   Iterator iterator = readySet.iterator();    while (iterator.hasNext()) {
     SelectionKey key = (SelectionKey)
      iterator.next();
     iterator.remove();      if (key.isConnectable()) {        boolean connected = processConnect(key);        if (!connected) {          return true; // Exit        }
     }      if (key.isReadable()) {
       String msg = processRead(key);
       System.out.println("[Server]: " + msg);
     }      if (key.isWritable()) {
       System.out.print("Please enter a message(Bye to quit):");
       String msg = userInputReader.readLine();        
       if (msg.equalsIgnoreCase("bye")) {          return true; // Exit        }
       SocketChannel sChannel = (SocketChannel) key.channel();
       ByteBuffer buffer = ByteBuffer.wrap(msg.getBytes());
       sChannel.write(buffer);
     }
   }    return false; // Not done yet  }  public static boolean processConnect(SelectionKey key) throws Exception{
   SocketChannel channel = (SocketChannel) key.channel();    while (channel.isConnectionPending()) {
     channel.finishConnect();
   }    return true;
 }  public static String processRead(SelectionKey key) throws Exception {
   SocketChannel sChannel = (SocketChannel) key.channel();
   ByteBuffer buffer = ByteBuffer.allocate(1024);
   sChannel.read(buffer);
   buffer.flip();
   Charset charset = Charset.forName("UTF-8");
   CharsetDecoder decoder = charset.newDecoder();
   CharBuffer charBuffer = decoder.decode(buffer);
   String msg = charBuffer.toString();    return msg;
 }  public static void main(String[] args) throws Exception {
   InetAddress serverIPAddress = InetAddress.getByName("localhost");    int port = 19000;
   InetSocketAddress serverAddress = new InetSocketAddress(
       serverIPAddress, port);
   Selector selector = Selector.open();
   SocketChannel channel = SocketChannel.open();
   channel.configureBlocking(false);
   channel.connect(serverAddress);    int operations = SelectionKey.OP_CONNECT | SelectionKey.OP_READ
       | SelectionKey.OP_WRITE;
   channel.register(selector, operations);

   userInputReader = new BufferedReader(new InputStreamReader(System.in));    while (true) {      if (selector.select() > 0) {        boolean doneStatus = processReadySet(selector.selectedKeys());        if (doneStatus) {          break;
       }
     }
   }
   channel.close();
 }
}

想了解更多关于Java的知识,联系在线客服,或者来惠州北大青鸟新方舟校区了解一下。

Java14.png

Java

标签:惠州计算机JAVA软件开发惠州计算机Java软件开发惠州计算机JAVA培训惠州计算机JAVA软件开发学校惠州计算机Java软件开发培训JAVAJava软件开发北大青鸟IT计算机学校北大青鸟IT软件学校北大青鸟IT学校


Java技术排行
标签列表
网站分类
文章归档
最近发表