2016-06-06 3 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 и КОМПЬЮТЕР3 одинаковые или разные инструкции.

+1

Вы рассматривали занятия? Массивы объектов довольно неуклюжи, а Java * * объектно ориентирован. – Kayaman

+0

Вы выполняете потоки, но сохраняете данные в 2D-массиве вместо реального объекта. Вы пропустили основы Java? – Kayaman

+1

Я буквально забыл о занятиях, спасибо. – Dangz1

ответ

0

Как pjklauser сказал, вы можете начать с простого класса POJO Config, например:

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()); 
    } 
} 
} 

Я надеюсь, что это поможет!

Смежные вопросы