2016-06-06 61 views
0

我開發的應用程序可以連接到本地網絡上的幾臺計算機,並向它們發送指令,例如:「運行此腳本」,「運行該腳本」並阻止新連接直到他們完成運行腳本。傳遞多種類型的相關變量(Java)

總之,我爲每個連接創建一個線程,並且我需要向他們傳遞端口,IP,指令,持續時間,線程名稱。然後線程創建套接字並通過流指令和持續時間傳遞。另一方的計算機則承認它已收到指令並執行腳本。然後,程序應該阻止任何嘗試使用該IP地址創建連接,直到客戶端回答完他運行腳本,但會允許連接到未連接的計算機。然後線程關閉流,套接字和自身,並允許通過新線程到該計算機的新連接。

現在我的問題是,我不知道如何創建一個系統,可以縮放比如。將新計算機添加到系統,腳本和持續時間值。

我想是這樣的:

 object[0][0] = 2222;     //PORT 
     object[0][1] = "localhost"; 
     object[0][2] = " to computer1"; 

     object[1][0] = 2223; 
     object[1][1] = "192.168.1.113"; 
     object[1][2] = " to computer2"; 

     object[2][0] = 2224; 
     object[2][1] = "192.168.1.108"; 
     object[2][2] = " to computer3"; 

,但我不能想出一個辦法來遍歷,如果我想發送指令給計算機1和COMPUTER3相同或不同的指令。

+1

你有沒有考慮上課?對象數組非常笨拙,而Java *畢竟是面向對象的。 – Kayaman

+0

您正在執行線程化,但將數據保存在二維數組中,而不是實際的對象。你沒有跳過Java的基礎知識嗎? – Kayaman

+1

我從字面上忘記了班級,謝謝。 – Dangz1

回答

0

正如pjklauser說,你可以從簡單的POJO類配置開始,例如:

import java.util.ArrayList; 

public class Config{ 

private String host; 
private int port; 
private String payload; 

public Config(String host, int port, String payload){ 
    this.host = host; 
    this.port = port; 
    this.payload = payload; 
} 

public String getHost() { 
    return host; 
} 

public void setHost(String host) { 
    this.host = host; 
} 

public int getPort() { 
    return port; 
} 

public void setPort(int port) { 
    this.port = port; 
} 

public String getPayload() { 
    return payload; 
} 

public void setPayload(String payload) { 
    this.payload = payload; 
} 

@Override 
public String toString(){ 
    return this.host + " " + this.port + " " + this.payload; 
} 

public static void main(String []args){ 
    ArrayList<Config> configs = new ArrayList<Config>(); 
    Config c1 = new Config("localhost", 2222, "To computer1"); 
    Config c2 = new Config("localhost", 2223, "To computer2"); 

    configs.add(c1); 
    configs.add(c2); 

    for (Config c: configs){ 
     System.out.println(c.toString()); 
    } 
} 
} 

我希望這將有助於!