【发布时间】:2016-06-06 19:24:10
【问题描述】:
我正在开发一个应用程序,它可以连接到本地网络上的几台计算机并向它们发送指令,例如:“运行此脚本”、“运行该脚本”并阻止与它的新连接,直到它们完成运行脚本。
简而言之,我为每个连接创建一个线程,我需要将端口、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 发送相同或不同的指令,我无法找到一种迭代的方法。
【问题讨论】:
-
你考虑过上课吗?对象数组是相当笨拙的,而Java 毕竟是面向对象的。
-
你正在做线程,但将数据保存在二维数组而不是真实对象中。您是否跳过了 Java 的基础知识?
-
我真的忘记上课了,谢谢。
-
将有关“任务”的数据 - ip、端口和有效负载封装到一个类 ( POJO ) 中。让Class实现“runnable”接口,实现run()方法,打开socket,发送指令,等待回复,完成后将结果放入Task对象。然后查看 java.util.concurrent.ExecutorService 类,它可以帮助您运行任何给定的任务,只需在实例化 ExecutorService 后调用它的“submit(Runnable)”方法。然后你需要管理哪些任务被发送到执行器。有点高级但相当标准的 java 东西。
-
这似乎比我所做的要干净得多。谢谢。
标签: java arrays multithreading sockets variables