我正在尝试更多地了解网络,套接字,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...
所以这个小代码我运作得很好。 (我有一个在localhost上运行良好的ServerSocket)。但是现在我试图通过GUI而不是命令行来做到这一点。
我有一个简单的JTextArea和一个JButton。我被困在:
while ((providedInput = userInputReader.nextLine()) != null)
每次点击Jbutton并从JTextArea打印文本时,如何调用clientSocketOutputStream?
为了确保套接字正在等待,我应该放一个死的while(true)循环吗?有些东西告诉我必须有另一种方式。
答案 0 :(得分:1)
只需在文本区域放置一个侦听器,以检测内容何时更改,然后根据所做的更改将任何您喜欢的内容发送到输出流。
一般情况下,文本区域不能很好地映射到这一点,但是作为可以在任何地方编辑的文本区域,您可能最好有一个只读文本区域来显示历史记录 - 然后有一个文本输入框(或一个较小的文本区域)和一个按钮,您按下该按钮可以在屏幕上的较小框中发送所有内容,将发送的文本附加到历史记录的末尾,然后擦除较小的框。
您还可以在按键上添加事件(例如返回键)以触发发送和移动到历史记录过程。