Соединение сокета успешно даже с неправильным / нулевым URL - PullRequest
0 голосов
/ 03 августа 2020

Я запускаю тест с использованием класса сокета Java, но каким-то образом мой socket.connect ВСЕГДА успешно подключается к чему-либо, даже если моя переменная url имеет значение null или неверно. Кто-нибудь знает, почему?

package ping_run_send;

import java.util.*;
import java.lang.*;
import java.net.*;
import java.io.*
import java.security.cert.*;
import javax.net.ssl.*;

public class tcpping {
    private String url, status;
    private Date timestamp;
    private long rtime;
    
    tcpping(String input_url){
        this.url = input_url;
    }
    void ping() {
        try{
            Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("my proxy", 80));
            Socket socket = new Socket(proxy);
            long tStart = System.currentTimeMillis();
            socket.connect(new InetSocketAddress(url, 80),2000);
            long tEnd = System.currentTimeMillis();
            rtime =  tEnd-tStart;
            timestamp = new Date(tStart);
            
            InputStream sIn = socket.getInputStream();
            
            if (sIn != null) {
                status = "normal";
                socket.close();
            }else {
                status = "error";
            }
        } catch(final MalformedURLException e){
            status = "error";
        } catch(IOException e){
            status = "error";
        }
    }
    Long get_rtime() {
        return rtime;
    }
    Date get_timestamp() {
        return timestamp;
    }
    String get_status() {
        return status;
    }
    
}

Я также попытался изменить оператор if с isConnected () на

            InputStream sIn = socket.getInputStream();
            if (sIn != null) {
                status = "normal";
                socket.close();
            }else {
                status = "error";
            }

Но, похоже, ничего не изменилось в его способности обнаруживать ошибку соединения.

мой тестовый файл:

package ping_run_send;
import java.lang.*;
import java.util.*;
import java.io.*;

import ping_run_send.httpping;

public class main {

    public static void main(String[] args){ 
        String url = "http://google.com";
        //urls like "",http://gowegwgwoJOIJOI03OINEPJPogle.#(*%" all works somehow
        
        tcpping testTcp = new tcpping(url);
        testTcp.ping();
        System.out.println("tcp ping:");
        System.out.println(testTcp.get_rtime());
        System.out.println(testTcp.get_timestamp());
        System.out.println(testTcp.get_status());
        

        
    }
}

1 Ответ

0 голосов
/ 03 августа 2020

Он подключается к прокси. Когда вы указываете прокси, соединение устанавливается с прокси, и прокси сам обрабатывает соединения с реальной конечной точкой.

...