[Java] java服务端 客户端(非阻塞 多线程) →→→→→进入此内容的聊天室

来自 , 2019-09-27, 写在 Java, 查看 108 次.
URL http://www.code666.cn/view/3a835d32
  1. public class MultithreadJIoSocketTest {
  2.     @Test
  3.     public void testMultithreadJIoSocket() throws Exception {
  4.         ServerSocket serverSocket = new ServerSocket (10002);
  5.         Thread thread = new Thread (new Accptor (serverSocket) );
  6.         thread.start();
  7.  
  8.         Scanner scanner = new Scanner (System.in);
  9.         scanner.next();
  10.     }
  11.  
  12.     public class Accptor implements Runnable {
  13.         private ServerSocket serverSocket;
  14.  
  15.         public Accptor (ServerSocket serverSocket) {
  16.             this.serverSocket = serverSocket;
  17.         }
  18.  
  19.         public void run() {
  20.             while (true) {
  21.                 Socket socket = null;
  22.                 try {
  23.                     socket = serverSocket.accept();
  24.                     if (socket != null) {
  25.                         System.out.println ("收到了socket:" + socket.getRemoteSocketAddress().toString() );
  26.                         Thread thread = new Thread (new Processor (socket) );
  27.                         thread.start();
  28.                     }
  29.                 } catch (IOException e) {
  30.                     e.printStackTrace();
  31.                 }
  32.             }
  33.         }
  34.     }
  35.  
  36.     public class Processor implements Runnable {
  37.         private Socket socket;
  38.  
  39.         public Processor (Socket socket) {
  40.             this.socket = socket;
  41.         }
  42.  
  43.         @Override
  44.         public void run() {
  45.             try {
  46.                 BufferedReader in = new BufferedReader (new InputStreamReader (socket.getInputStream() ) );
  47.                 String readLine;
  48.                 while (true) {
  49.                     readLine = in.readLine();
  50.                     System.out.println ("收到消息" + readLine);
  51.                     if ("end".equals (readLine) ) {
  52.                         break;
  53.                     }
  54.                     //客户端断开连接
  55.                     socket.sendUrgentData (0xFF);
  56.                     Thread.sleep (5000);
  57.                 }
  58.             } catch (InterruptedException e) {
  59.                 e.printStackTrace();
  60.             } catch (SocketException se) {
  61.                 System.out.println ("客户端断开连接");
  62.             } catch (IOException e) {
  63.                 e.printStackTrace();
  64.             }
  65.             finally {
  66.                 try
  67.                 {
  68.                     socket.close();
  69.                 } catch (IOException e) {
  70.                     e.printStackTrace();
  71.                 }
  72.             }
  73.         }
  74.  
  75.     }
  76. }

回复 "java服务端 客户端(非阻塞 多线程)"

这儿你可以回复上面这条便签

captcha