簡體   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