2013-09-05 2 views
0

Я пытаюсь проверить, открыты ли несколько пор, и если открыт порт 80 - отправьте HTTP-запрос, а затем покажите результат в консоли. Каждый порт проверяется в своем потоке.неизвестное исключение хоста при попытке отправить запрос

Я посылаю запросы, как этот

public static void send(Socket sock, String host) throws IOException{ 
    PrintWriter pw = new PrintWriter(sock.getOutputStream()); 
    pw.println("GET/HTTP/1.1"); 
    pw.println("Host: " + host); 
    pw.println(""); 
    pw.flush(); 
} 

В классе TCPClient я использую его и возвращать результат в виде байтов, а затем показать его утешать.

try { 
     sock = new Socket(host, port); 
     System.out.println("port " + port + " is in use"); 
     // send request 
     HttpSender.send(sock, host); 
     BufferedReader bf = new BufferedReader(new InputStreamReader(sock.getInputStream())); 
     StringBuffer response = new StringBuffer(); 
     String line = ""; 
     while((line = bf.readLine()) != null) { 
      response.append(line); 
      response.append('\r'); 
     } 
     bf.close(); 
     return String.valueOf(response).getBytes(); // in method run I show it 
    } catch (SocketException e) { 
     return ("port " + port + " is free").getBytes(); 
    } 

Я создаю пул потоков для проверки портов.

public class ThreadPool { 

private static int MAX_THREADS = 5; 
private static String DESTINATION = "http://stackoverflow.com/"; 
private ExecutorService es = null; 

public ThreadPool() { 
    es = Executors.newFixedThreadPool(MAX_THREADS); 
} 

public void perform(int start, int end) throws UnknownHostException { 
    for (int i = start; i <= end; i++) { 
     Runnable req = new TCPClient(DESTINATION, i); 
     es.execute(req); 
    } 
    es.shutdown(); 
    while (!es.isTerminated()) { 
    } 
    ; 
    System.out.println("all ports checked!"); 
} 

}

Когда я установил назначения в качестве www.stackoverflow.com и получил документ с текстом, который it was moved permanently to http://stackoverflow.com/. Когда я установил этот пункт назначения, у меня есть UnknownhostException.

Где проблема?

ответ

2

Вы попробовали private static String DESTINATION = "stackoverflow.com";? Строка "http://stackoverflow.com" не является именем хоста, это URL.

Смежные вопросы