1

IPとポートを介してPCへの接続をチェックするAndroidアプリを作成しています。

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