大家好,我是用的这个代码。
SocketConnFuntion scf=new SocketConnFuntion();
boolean c=scf.testFeel(Ip, SocketPort);
if(c==true){
setFeel("开启");
}else if(c==false){
setFeel("关闭");
}
try {
socket = new Socket(ip, Integer.valueOf(SocketPort));
return true;
} catch (Exception e) {
return false;
}这样可以,但是效率不好,因为我要监听5个端口,socket要去连接花费时间,如果开启状态很快就好了,但是关闭状态的话,程序基本卡死了。。而且我这个还需要显示的界面上,所以请问有没有高效率的办法啊。谢谢帮忙。给出满意答案的99分都给你。
好像还有一中是通过java执行cmd命令来实现。这个效率更不理想。。

解决方案 »

  1.   

    Socket s = new Socket();
    SocketAddress add = new InetSocketAddress('www.163.com',80);
    s.connect(add,5000);以5秒超时进行server连接,超过5秒连接不成功则抛出异常
      

  2.   

    try {
    socket = new Socket(ip, Integer.valueOf(SocketPort));
    return true;
    } catch (Exception e) {
    return false;
    finally { 
        // Clean up
        if (socket != null) socket.close(); 
    }

    只有这种办法了,记得即时关闭。
    5个端口还好了,如果不行,可以考虑多线程监控