2014-05-01 4 views
-1

나는 하나 개의 경로 만 열려있는 호스트로 소켓 핸드 셰이크를 수행하기 위해 노력하고 있지만 나는 다음과 같은 오류가 계속 발생호스트 이름 java.net.UnknownHostException

import java.io.*; 
import javax.net.ssl.*; 

public class Handshake { 

    public static void main(String[] args) { 
     String host = "example.com/tests/test1?id=abc"; 
     int port = 443; 
     SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault(); 
     try { 
      SSLSocket socket = (SSLSocket) factory.createSocket(host, port); 
      printSocketInfo(socket); 
      socket.startHandshake(); 
      socket.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    private static void printSocketInfo(SSLSocket socket) { 
     System.out.println("Socket class: " + socket.getClass()); 
     System.out.println("Remote address = " + socket.getInetAddress().toString()); 
     System.out.println("Remote port = " + socket.getPort()); 
     System.out.println("Local socket address = " + socket.getLocalSocketAddress().toString()); 
     System.out.println("Local address = " + socket.getLocalAddress().toString()); 
     System.out.println("Local port = " + socket.getLocalPort()); 
     System.out.println("Need client authentication = " + socket.getNeedClientAuth()); 
     SSLSession ss = socket.getSession(); 
     System.out.println("Cipher suite = " + ss.getCipherSuite()); 
     System.out.println("Protocol = " + ss.getProtocol()); 
    } 
} 
+3

기존 답변이 무효화되는 방식으로 질문을 수정하지 마십시오. 후속 질문이있는 경우 ** 새로운 ** 질문을 물어보십시오. 참고로이 질문에 다시 연결하십시오. – ChrisF

답변

2

java.net.UnknownHostException: example.com/tests/test1?id=abc

이는 SSL 핸드 셰이크 문제가되지 않습니다 : 내 Handshake.java 클래스입니다. 이는 호스트 이름 검색 문제이며, 호스트 이름으로 제공하는 것이 그 종류의 것이 아니기 때문에 발생합니다. 이 URL은 쿼리로 완성 된 URL입니다. HTTP 트랜잭션에서 URL로 사용할 수 있습니다. Socket에는 의미가 없다.

또한 스택 추적에서 이미 말했던 것처럼 SSL 또는 핸드 셰이크와 아무 관련이 없습니다.

+0

문제는 URL을 호스트 이름으로 사용하려고 시도하고 있다는 것입니다. 기간. HTTPS 연결이 필요하다면, HTTPS URL,'HttpsURLConnection '등을 사용하십시오. 당신이 지금하고있는 방식은 완전히 난센스입니다. – EJP

+2

@ThreaT EJP가 자신이 말하는 것에 대해 알고 있다고 생각할 수 있다고 생각합니다. http://www.amazon.com/Fundamental-Networking-Java-Esmond-Pitt/dp/1846280303 –

+1

그리고 멋진 책은, @MarkRotteveel입니다! –

1

도메인 이름에서 호스트의 IP 주소를 확인할 수없는 경우 UnknownHostException이 발생하므로 잘 모르겠다. IP를 직접 입력하면 (도메인이 example.com이 아님을 가정하면) 경로가없는 과 쿼리 문자열?이 어떻게됩니까?

+1

그것은 쿼리 문자열이 아니라 전체 경로입니다. 호스트 이름에서 합법적 인 것은 없습니다. – EJP

+0

네 말이 맞아.하지만 혼란스러워. 이제 내 대답을 편집했습니다. – elbuild