1

我正在制作一个 android 应用程序,通过 ip 和端口检查与 PC 的连接。

我有一堂课,我通过了 ip 和端口。然后我有一个方法可以返回一个布尔值,如果连接正常与否。

问题来了 wifi 工作正常,但使用 3g 方法总是返回 true

像这样的方法:

 public boolean PingWithPort(){

    int[] AResult = new int[2];
    int countResOk = 0;
    boolean result = false;
    if(!hostName.equals("")){

        for(int positionResult = 0; positionResult < 1; positionResult ++){     
            try {
                    try{

                        Socket echoSocket = null;
                        echoSocket = new Socket(hostName, puerto);
                        echoSocket.setSoTimeout(1000);

                        if(echoSocket.isConnected()){
                            AResult[positionResult] = 1;
                        }else{
                            AResult[positionResult] = 0;                            
                        }
                        echoSocket.close();

                    }catch(IOException e){
                        AResult[positionResult] = 0;
                    }catch(Exception e){
                        AResult[positionResult] = 0;
                    }
            } catch (Exception e) {
                AResult[positionResult] = 0;
                e.printStackTrace();
            } 
        }

            for(int controlResult = 0; controlResult < AResult.length-1; controlResult++){
                if(AResult[controlResult] == 1){
                    countResOk++;
                }
            }
            if(countResOk >= 1){
                result = true;
            }else{
                result = false;
            }
    }else{
        result = false;
    }
    return result;
}

那么如何解决这个问题呢?

非常感谢。我花了几天时间寻找解决方案。

我找到的解决方案是这样的:

public boolean PingWithPort(){
    int[] AResult = new int[2];
    int countResOk = 0;
    boolean result = false;

    if(!hostName.equals("")){
        for(int positionResult = 0; positionResult < 1; positionResult ++){ 
            try {
                    try{

                        URL url = new URL("http://"+hostName+":"+puerto);
                        HttpURLConnection urlc = (HttpURLConnection) url.openConnection();

                        urlc.setConnectTimeout(3000);
                        urlc.setReadTimeout(3000);

                        urlc.connect();
                        if (urlc.getResponseCode() >= -1) {
                            AResult[positionResult] = 1; 
                        }else{
                            AResult[positionResult] = 0;
                        }
                    }catch(Exception e){
                        AResult[positionResult] = 0;
                    }


            } catch (Exception e) {
                AResult[positionResult] = 0;
                e.printStackTrace();
            } 
        }

打开一个 HTTP 连接并检查您是否可以打开。

4

0 回答 0