繁体   English   中英

Java套接字PrintWriter仅可运行一次?

[英]Java Socket PrintWriter Works Once Only?

您好,我正在尝试使用套接字进行聊天,当我尝试向客户端发送数据时,它会发送一次,但随后它什么也没收到,然后我发现它的打印机弄乱了,我尝试了其他方法,但它确实做到了即使我尝试从在线教程中复制所有内容,它也只能工作一次! 不能正常工作,应该怎么解决这里的问题? 印刷机应该能够多次发送数据。 我正在JavaFX中开发它。

这是按下按钮时执行的printwriter功能代码:

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次,然后在所有时间内都停止了它的工作– GrimReaper

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM