我有一個Java應用程序輸入圖像,給出了許多選項來編輯它們(裁剪,調整大小),然後將它們導出到本地存儲。如何爲Java應用程序提供網絡功能?
我目前正嘗試使用java.net將服務器附加到此應用程序,但運行到幾個問題,因爲我從來沒有這樣做過。
- 我有激活服務器的圖形用戶界面的按鈕,這樣應用程序可以接收命令 - 問題是服務器使用while循環,不會停止,直到它與客戶斷開連接,這意味着程序直到那時才能運行。我假設它需要創建一個新線程,但是如何在不創建新實例的情況下向應用發送命令?
- 我想通過服務器將圖像從客戶端發送到應用程序。目前使用JFileChooser來選擇圖像的客戶端,但是如何將它發送到流中並在另一端重新創建它?
我的代碼只是修改了此client和server的版本。它只是刪除回顯功能並根據客戶端發送的字符串運行一個方法。 (例如客戶端發送「打開」,以服務器 - 服務器運行開放(){}方法
編輯: 代碼:
這是服務器代碼ImageGUI是與所有的命令的GUI。並保持openImage方法 私人INT PORTNUMBER = 8888;
public Server() {
try (
// Create Server socket
ServerSocket theServer = new ServerSocket(portNumber);
// Create socket for client
Socket clientSocket = theServer.accept();
// Use to write to client
PrintWriter out = new PrintWriter(
clientSocket.getOutputStream(), true);
// Used to read from client
BufferedReader in = new BufferedReader(new InputStreamReader(
clientSocket.getInputStream()));) {
// Waits for Client commands
String clientCommand;
while ((clientCommand = in.readLine()) != null) {
if (clientCommand.contains("open")) {
// Runs open method in ImageGUI
new ImageGUI().openImage(); // I don't want this because it
// will create another GUI
// I want to run the openImage()
// in the GUI already open
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
向我們展示一些代碼。 – 2014-02-19 15:41:08
'但是如何在不創建新實例的情況下向應用程序發送命令?咦? – SLaks
我在代碼中添加了一條評論來解釋我的意思。 – user2916314