Java Socket PrintWriter只运行一次?

时间:2015-12-09 12:21:15

标签: java sockets javafx

您好我正在尝试进行使用套接字的聊天,当我尝试将数据发送到客户端时,它会发送一次,但之后它没有收到任何东西然后我注意到它的打印机搞砸了我试过其他方法但它确实同样它只有一次工作,即使我试图从教程在线复制一切它做同样的!不起作用应该洙这里的问题是什么? printwriter应该能够多次发送数据。我在JavaFX中开发它。

这是在按下按钮时执行的打印机功能代码:

public void testfunction(ActionEvent event){
            //new Thread(new ListenerThread()).start();
            //play();
            //ObservableList<String> list = FXCollections.observableArrayList("Hello, hello?");
            //TabPaneTabSlavesSlavesList.setItems(list);
                /*System.out.println("Pc index: " + connectedClients.get(0).getLocalAddress().getLocalHost().getHostAddress());
                System.out.println("Pc index: " + connectedClients.get(0).getLocalAddress().getLocalHost().getCanonicalHostName());
                System.out.println("Pc index: " + connectedClients.get(0).getLocalAddress().getLocalHost().getAddress());
                System.out.println("Pc index: " + connectedClients.get(0).getLocalAddress().getLocalHost().getHostName());*/

                // Neina gauti ip ar kanors tokio su sitom funkcijomis FIX: Paimti informatcija ir persiusti su stream.

            try {
                Random rand = new Random();
                int myrand = rand.nextInt(50) +1;
                PrintWriter pw = new PrintWriter(connectedClients.get(0).getOutputStream());
                pw.println("PINGiamconnected: " + Integer.toString(myrand));
                pw.flush();
            } catch (Exception e) {
                e.printStackTrace();
            }

        }

这是在线程上运行的侦听器代码:

@Override
    public void run() {
        // TODO Auto-generated method stub
        try {
            Socket clientSocket = MainController.serverSocket.accept();
            MainController.connectedClients.add(clientSocket);
            MainController.NewClientConnected = true;
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

以下是客户端的读者也在处理线程:

@Override
    public void run() {

        try {

            BufferedReader in = new BufferedReader(new InputStreamReader(MainController.socket.getInputStream()));
            //DataInputStream in = new DataInputStream(MainController.socket.getInputStream());
            String line = in.readLine();
            System.out.println(line);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

我想你们所有人都需要我想如果你需要更多东西告诉我。感谢。

1 个答案:

答案 0 :(得分:0)

我修复它的问题是线程只执行了一次然后停止它确实工作了 - GrimReaper