这段代码的作用是尝试建立一个Socket连接,并设置一个超时时间。代码中使用了一个临时的线程来执行建立Socket连接的操作。

以下是每行代码的解释:

  1. 创建一个名为tmp的新线程,该线程实现了Runnable接口,重写了run()方法。

  2. 在线程内部将sockp[0]设为null,表示还未建立Socket连接。

  3. 尝试建立Socket连接,如果成功,则将sockp[0]设为新建立的Socket对象。

  4. 如果建立连接时发生异常,将异常存储到ee[0]中,并判断如果sockp[0]不为null且已连接,则关闭连接。

  5. 将sockp[0]设为null,表示连接未建立成功。

  6. 设置线程名为"Opening Socket " + host。

  7. 启动线程。

  8. 尝试等待线程tmp执行完毕,最长等待时间为timeout毫秒。

  9. 如果等待过程中被中断,则捕获InterruptedException异常。

  10. 如果连接建立成功,即sockp[0]不为null且已连接,则将socket设为sockp[0]。

  11. 返回socket对象。

  12. 如果连接未建立成功,则将message设为"timeout: "。

  13. 如果连接建立过程中发生异常,则将message设为异常的字符串表示。

  14. 中断线程tmp。

  15. 将tmp设为null。

  16. 抛出JSchException异常,传入message和ee[0]作为异常信息。

tmp.join((long)timeout)这一行的作用是等待线程tmp执行完毕,最长等待时间为timeout毫秒。如果在指定的时间内线程tmp未完成,则会抛出InterruptedException异常

Thread tmp = new Threadnew Runnable public void run sockp0 = null; try sockp0 = new Sockethost port;

原文地址: http://www.cveoy.top/t/topic/icLk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录