关于so​​cket.startHandshake();在java中

时间:2012-06-20 13:45:00

标签: java sockets ssl

我有一个小的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>

1 个答案:

答案 0 :(得分:2)

您的观点#1似乎应该处理异常处理:将all_ips上的每个迭代包含在其自己的try / catch块中。

你可以从这里的一些多线程和超时中受益匪浅,因为一些防火墙只会静默地丢弃你的SYN数据包并让你的扫描仪工具无限期地等待。

但在此之前,请注意:您将非常看起来像扫描网络中的某些漏洞的恶意工具。如果你过于咄咄逼人或针对一些你不认识的人,你可能会遇到行政上的麻烦。一个线程池或一些类似的技术,以确保您没有超过相当数量的连接建立/秒是最低限度。