java timer and socket problem

后端 未结 3 1247
再見小時候
再見小時候 2020-12-21 11:28

I\'m trying to make a program which listens to the client input stream by using socket programming and timer

but whenever timer executes.. it gets hanged

Ple

3条回答
  •  Happy的楠姐
    2020-12-21 11:42

    I think you want to use socket timeouts instead of a timer:

    Thread listener = new Thread() {
        ServerSocket ss;
    
        @Override
        public void run() {
            try {
                ss = new ServerSocket(5000);
                ss.setSoTimeout(2000);
                try {
                    while (true) {
                        try {
                            final String text = acceptText();
                            SwingUtilities.invokeLater(new Runnable() {
                                public void run() {
                                    jTextArea1.append(text);
                                }
                            });
                        } catch (final Exception ex) {
                            SwingUtilities.invokeLater(new Runnable() {
                                public void run() {
                                    setLbl(ex.getMessage());
                                }
                            });
                        }
                    }
                } finally {
                    ss.close();
                }
            } catch (IOException ex) {
                Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    
        private String acceptText() throws IOException {
            Socket s = ss.accept();
            try {
                InputStream is=s.getInputStream();
                try {
                    DataInputStream dis=new DataInputStream(is);
                    return dis.readUTF();
                } finally {
                    is.close();
                }
            } finally {
                s.close();
            }
        }
    };
    listener.setDaemon(true);
    listener.start();
    

提交回复
热议问题