私は、MySQLデータベースからコンピューター名を抽出し、それらの名前を文字列配列リストに格納する簡単なプログラムを作成中です(この部分は正常に機能します)。その後、Stringをパラメーター(コンピューター名になります)として受け取り、pingを試行するクラスとメソッドを作成しました。そのクラスのコードは次のとおりです。
public class Ping
{
public void pingHost(String hostName)
{
try
{
InetAddress inet = InetAddress.getByName(hostName);
boolean status = inet.isReachable(5000);
if (status)
{
System.out.println(inet.getHostName() + " Host Reached\t" + inet.getHostAddress());
}
else
{
System.out.println(inet.getHostName() + " Host Unreachable");
}
}
catch (UnknownHostException e)
{
System.err.println(e.getMessage() + " Can't Reach Host");
}
catch (IOException e)
{
System.err.println(e.getMessage() + " Error in reaching the Host");
}
}
UnknownHostException
問題は、手動でpingを実行できる場合や、コンピューター名を「hostName」としてハードコーディングした場合でも、ほとんどのコンピューターでスローされ続けることです。
これが私のメインの外観です:
public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException
{
ArrayList <String> list = new ArrayList<String>();
MySQLConnect myConnection = new MySQLConnect();
myConnection.importData(list);
Ping pingComputer = new Ping();
pingComputer.pingHost(list.get(87));
}
現在、スローしているUnknownHostException
が手動でpingできる1台のコンピューターで実験しようとしています。なぜこれが起こっているのか誰かが知っていますか?
編集...
これをもう少し説明します。たとえば、mainで、これらのパラメータを次のパラメータに渡すと、次のようになりますpingHost
。
pingComputer.pingHost("ROOM-1234");
正常にpingを実行し、正しいホスト名/アドレスを返します。しかし、list.get(87)
同じホスト名「ROOM-1234」を返しますが、スローしUnknownHostException
ますか?これは私を本当に混乱させ、なぜそれが機能しないのかわかりません。
編集
うわー、ついにそれを理解しました。「ROOM-1234」のように文字列を直接渡したときにpingが機能していた理由は、空白がなく、配列から取得したため、list.get(87)
同じものが返されましたが、チェックcharLength
すると、異なる値が返されました:)trim
空白を取り除くために使用することになったばかりで、今ではうまく機能しています。
pingComputer.pingHost(list.get(87).trim());
すべての提案をありがとう!