2015-12-09 2 views
1

Привет, я пытаюсь сделать чат, который использует сокеты, и когда я пытаюсь отправить данные клиенту, он отправляет его один раз, но затем он ничего не получает, я заметил, что его печатающий редактор испортил, я пробовал другие способы, но он делает он работает только один раз, даже если я попытался скопировать все из учебника онлайн, он делает ТО ЖЕ! не работает, как это должно быть soo, в чем проблема? печатник должен иметь возможность отправлять данные более одного раза. Я разрабатываю это в JavaFX.Java Socket PrintWriter работает только один раз?

Это функция 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(); 
     } 

    } 

Я думаю, это все, что вам нужно, чернила, если вам нужно что-то еще сказать мне. Благодарю.

+0

Так много вещей неправильно с этим, что вы явно не следовали надлежащей сеть учебника. Я рекомендую вам найти его сейчас (я рекомендую учебники Oracle), чтобы избежать дальнейших разочарований, когда все будет не так, как вы ожидаете. – Kayaman

+0

Знаете ли вы видеоурок? Мне не нравится читать. Я знаю программирование, я могу создать что-нибудь даже в играх, но для меня это не ново. – GrimReaper

+0

Если вам не нравится читать, программирование, вероятно, не лучший выбор для вас. – Kayaman

ответ

0

Я зафиксировал его проблема заключалась в том, что поток выполняется только один раз, а затем остановил она работать все это время - GrimReaper

Смежные вопросы