繁体   English   中英

使套接字等待来自JTextArea的输入

[英]Make socket wait for input from JTextArea

我正在尝试学习有关网络,套接字,udp等的更多信息。

// main method: 

Socket clientSocket = new Socket("localhost", 10007);

PrintWriter clientSocketOutputStream = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader clientSocketInputStream = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

Scanner userInputReader = new Scanner(System.in);
String providedInput;

while ((providedInput = userInputReader.nextLine()) != null) {
    clientSocketOutputStream.println(providedInput);
    displayOnConsole("You have provided text: " + providedInput);
    String responseFromTheServer = clientSocketInputStream.readLine();
    System.out.println("Server has responded: " + responseFromTheServer);
    System.out.println(waitingForInputText);
}

// rest of the code... 

因此,我拥有的这段小代码效果很好。 (我有一个ServerSocket可以在localhost上正常运行)。 但是现在我试图通过GUI而不是命令行来做到这一点。

我有一个简单的JTextArea和一个JButton。 我被困在:

while ((providedInput = userInputReader.nextLine()) != null) 

每当我按下Jbutton并从JTextArea打印文本时,如何调用clientSocketOutputStream?

我是否应该为了确保套接字正在等待而放置一个死的while(true)循环? 某些事情告诉我,必须有另一种方式。

只需在文本区域上放置一个侦听器以检测内容何时更改,然后根据所做的更改将所需的内容发送到输出流。

通常,文本区域不能很好地映射到此区域,尽管您可以在任何地方编辑文本区域,但最好使用只读文本区域显示历史记录,然后再使用单个文本输入框(或较小的文本)区域)和您按下的按钮以将屏幕上较小框中的所有内容发送到流中,将发送的文本附加到历史记录的末尾,然后擦除较小框。

您还可以在按键上添加事件(例如,回车键)以触发发送和移动到历史记录的过程。

暂无
暂无

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

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