Буферизированный читатель GUI Java (tcp) - PullRequest
0 голосов
/ 15 ноября 2018
private void btnSendActionPerformed(java.awt.event.ActionEvent evt) {                                        
    // TODO add your handling code here:
    BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
    String fromServer;
    String fromUser;

    try{
    while ((fromServer = in.readLine()) != null) {
        txtField.setText("Server: " + fromServer +"\n");
        if (fromServer.equals("hehe bye"))
            break;

        fromUser = stdIn.readLine();
    if (fromUser != null) {
            txtField.setText("Client: " + fromUser +"\n");
            out.println(fromUser);
    }
    }
    out.close();
    in.close();
    stdIn.close();
    nisSocket.close();
  } catch(Exception e){
      //
  }


}    


public static void main(String args[]) {
    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Gui_java().setVisible(true);
        }
    });

    try {
        nisSocket = new Socket("localhost", 8888);
        out = new PrintWriter(nisSocket.getOutputStream(), true);
        in = new BufferedReader(new InputStreamReader(nisSocket.getInputStream()));
    } catch (UnknownHostException e) {
        System.err.println("Don't know about host: localhost.");
        System.exit(1);
    } catch (IOException e) {
        System.err.println("Couldn't get I/O for the connection to: localhost.");
        System.exit(1);
    }
}

// Variables declaration - do not modify                     
private javax.swing.JButton btnSend;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea txtArea;
private javax.swing.JTextField txtField;
// End of variables declaration                   

}

Когда я запускаю код GUI, он зависает.Я пытался изменить многое, но это не сработало.План состоял в том, чтобы сделать текстовое поле для отправки сообщения и отображения в текстовой области, а затем в текстовой области будет показано, что отвечает сервер.У сервера есть свой собственный ответ, поэтому я сделал графический интерфейс только для Клиента.

Я часами пытался найти решение, но я не совсем понимаю, из-за низкого уровня знаний, извините.

отредактировано:

/**
 * Creates new form Gui_java
 */

static Socket nisSocket = null;
static PrintWriter out = null;
static BufferedReader in = null;

они объявлены в начале, у меня есть 3 класса: клиент (графический интерфейс пользователя), протокол, сервер.Я не хочу публиковать все, потому что это может быть слишком долго.

...