加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 00:12:29 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 public class MultithreadJIoSocketTest { @Test public void testMultithreadJIoSocket() throws Exception { ServerSocket serverSocket = new Serv

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

public class MultithreadJIoSocketTest {
    @Test
    public void testMultithreadJIoSocket() throws Exception {
        ServerSocket serverSocket = new ServerSocket (10002);
        Thread thread = new Thread (new Accptor (serverSocket) );
        thread.start();

        Scanner scanner = new Scanner (System.in);
        scanner.next();
    }

    public class Accptor implements Runnable {
        private ServerSocket serverSocket;

        public Accptor (ServerSocket serverSocket) {
            this.serverSocket = serverSocket;
        }

        public void run() {
            while (true) {
                Socket socket = null;
                try {
                    socket = serverSocket.accept();
                    if (socket != null) {
                        System.out.println ("收到了socket:" + socket.getRemoteSocketAddress().toString() );
                        Thread thread = new Thread (new Processor (socket) );
                        thread.start();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public class Processor implements Runnable {
        private Socket socket;

        public Processor (Socket socket) {
            this.socket = socket;
        }

        @Override
        public void run() {
            try {
                BufferedReader in = new BufferedReader (new InputStreamReader (socket.getInputStream() ) );
                String readLine;
                while (true) {
                    readLine = in.readLine();
                    System.out.println ("收到消息" + readLine);
                    if ("end".equals (readLine) ) {
                        break;
                    }
                    //客户端断开连接
                    socket.sendUrgentData (0xFF);
                    Thread.sleep (5000);
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (SocketException se) {
                System.out.println ("客户端断开连接");
            } catch (IOException e) {
                e.printStackTrace();
            }
            finally {
                try
                {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读