我有一个小的Java程序,它从文本文件中读取IP列表,并在循环内部创建与ip的ssl会话。会话可能成功还是失败取决于端口443是否在另一端启用。
我的问题: 1.如果另一端未启用端口443,则会话将失败。问题是我的程序停在这里并进入异常处理并打印错误并结束。我希望程序继续使用下一个IP创建下一个会话,依此类推。如何使其继续并打印出一条消息,说明该IP会话失败?
另一个问题:如何获得启用的密码套件?我试图打印socket.getEnabledCipherSuites();但打印的奇怪文本根本不是一种密码套件。
编辑:
public static void main(String[] argv) {
try{
while ((there are IPs)
{
try{
//call for Connect function which has try/catch on it the same way
}catch (Exception e){
System.err.println("Error: " + e.getMessage());
}//catch
}//end while loop
catch (Exception e){
System.err.println("Error: " + e.getMessage());
}//catch
}//end void main </i>
答案 0 :(得分:2)
您的观点#1似乎应该处理异常处理:将all_ips上的每个迭代包含在其自己的try / catch块中。
你可以从这里的一些多线程和超时中受益匪浅,因为一些防火墙只会静默地丢弃你的SYN数据包并让你的扫描仪工具无限期地等待。
但在此之前,请注意:您将非常看起来像扫描网络中的某些漏洞的恶意工具。如果你过于咄咄逼人或针对一些你不认识的人,你可能会遇到行政上的麻烦。一个线程池或一些类似的技术,以确保您没有超过相当数量的连接建立/秒是最低限度。