Java Socket PrintWriter只能工作一次?

Java Socket PrintWriter只能工作一次?,java,sockets,javafx,Java,Sockets,Javafx,您好,我正在尝试使用套接字进行聊天,当我尝试向客户端发送数据时,它会发送一次数据,但没有接收到任何内容,然后我注意到它的printwriter出现了问题,我尝试了其他方法,但它是一样的,它只工作一次,即使我尝试在线复制教程中的所有内容,它也会这样做!它不应该这样工作,所以这里有什么问题?printwriter应该能够多次发送数据。我正在用JavaFX开发这个 这是按下按钮时执行的printwriter功能代码: public void testfunction(ActionEvent event

您好,我正在尝试使用套接字进行聊天,当我尝试向客户端发送数据时,它会发送一次数据,但没有接收到任何内容,然后我注意到它的printwriter出现了问题,我尝试了其他方法,但它是一样的,它只工作一次,即使我尝试在线复制教程中的所有内容,它也会这样做!它不应该这样工作,所以这里有什么问题?printwriter应该能够多次发送数据。我正在用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();
        }

    }

我想这就是你们需要的我想如果你们还需要什么,告诉我。谢谢。

我修复了它问题是线程只执行了一次,然后停止了它一直在工作–GrimReaper

我修复了它问题是线程只执行了一次,然后停止了它一直在工作–GrimReaper有很多问题,你显然没有遵循正确的网络教程。我建议你现在就去找一个(我推荐Oracle教程),以避免在事情不能按你期望的方式运行时进一步受挫。你知道视频教程吗?我不喜欢读书。我知道编程,我可以创造任何东西,甚至游戏,但网络对我来说是新事物。如果你不喜欢阅读,编程对你来说可能不是最好的选择。我已经创建了很多大型项目,所以编程不是问题,我只是不喜欢我需要阅读的教程。我修复了它。问题是线程只执行了一次,然后就停止了,它一直在工作。这有很多问题,你显然没有遵循正确的网络教程。我建议你现在就去找一个(我推荐Oracle教程),以避免在事情不能按你期望的方式运行时进一步受挫。你知道视频教程吗?我不喜欢读书。我知道编程,我可以创造任何东西,甚至游戏,但网络对我来说是新事物。如果你不喜欢阅读,编程可能不是你的最佳选择。我已经创建了很多大型项目,所以编程不是问题,我只是不喜欢我需要阅读的教程。我修复了它。问题是线程只执行了一次,然后就停止了,它一直在工作