javaNIO学习笔记一

    xiaoxiao2021-03-25  59

     

    传统IO

     

    第一步

    输入命令cmd 打开控制台,输入 telnet  127.0.0.1 10101连接上服务端。

    按ctrl+] 打开回显,输入send hello发送消息1

    第二步

     

    输入命令cmd 打开控制台,输入 telnet  127.0.0.1 10101连接上服务端。

    按ctrl+] 打开回显,输入send hello2发送消息2

    第三步

    这时,发现服务端阻塞,只接收到一个消息。

     

    第四步

     

    关闭命令行窗口1,发现这时才接收到第二个消息。

     

    源代码

     

     

    package OIO; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * 传统socket服务端 * @author -琴兽- * */ public class OioServer2 { // telnet 127.0.0.1 10101 //@SuppressWarnings("resource") public static void main(String[] args) throws Exception { //创建socket服务,监听10101端口 ServerSocket server=new ServerSocket(10101); System.out.println("服务器启动!"); while(true){ //获取一个套接字(阻塞) final Socket socket = server.accept(); System.out.println("来个一个新客户端!"); //业务处理 handler(socket); } } /** * 读取数据 * @param socket * @throws Exception */ public static void handler(Socket socket){ try { byte[] bytes = new byte[1024]; InputStream inputStream = socket.getInputStream(); while(true){ //读取数据(阻塞) int read = inputStream.read(bytes); if(read != -1){ System.out.println(new String(bytes, 0, read)); }else{ break; } } } catch (Exception e) { e.printStackTrace(); }finally{ try { System.out.println("socket关闭"); socket.close(); } catch (IOException e) { e.printStackTrace(); } } } }

    javaNIO学习笔记二

     

     

    转载请注明原文地址: https://ju.6miu.com/read-32382.html

    最新回复(0)