2012-11-22 4 views
1

SSLSocket을 생성 할 때 로컬 포트를 설정하려면 어떻게해야합니까?Java SSLSocket - 로컬 포트를 설정하는 방법

SSLSocketFactory factory = (SSLSocketFactory)SSLSocketFactory.getDefault(); 
SSLSocket s = (SSLSocket) factory.createSocket(SERVER_ADDRESS, SERVER_PORT); 

그것은 LOCAL_PORT를 설정하는 매개 변수와 하나의 SSLSocket 나던 작업의 생성자가 나던 그의 createSocket 방법을 보인다

이 내가 소켓을 만드는 방법이다.

감사

+0

Javadoc을 읽으셨습니까? – EJP

+0

흠, 실제로 나는 그것을했고 또한 읽었다. 읽으면 SSLSocket가 로컬 포트를 설정할 수있는 메소드를 구현하지 않는다는 것을 알 수 있습니다. –

+0

여러 번 읽었습니다. 감사합니다. 아무도 SSLSocket에 있다고 말하지는 않았지만 가장 확실한 방법이었습니다. @ Philipp의 답변을 참조하십시오. 주의 약 10 년 동안 그 공급자를 추가 할 필요가 없습니다. 공급자 팁의 경우 – EJP

답변

2

는 호스트와 포트를 소요의 SocketFactory에서의 SSLSocketFactory에 의해 상속됩니다의 createSocket 방법의 변형이있다. the documentation을 참조하십시오.

+0

그럼 SSLSocket이 아닌 일반 소켓이 필요합니다. 서버가 요구하기 때문입니다. –

+0

SSLSocket을 얻을 수 있습니다. SSLSocketFactory는 SocketFactory를 확장 해, SSLSocket는 Socket를 확장합니다. SSLSocketFactory의 createSocket 메소드를 호출하면이 특정 변형의 메소드 선언을 SocketFactory에서 상속 받았을 때도 SSLSocket을 리턴합니다. 그러나 정상적인 소켓 참조로 "위장한"값을 반환합니다. 하지만 반환 된 Socket을 SSLSocket으로 다운 캐스팅 할 수 있어야합니다. – Philipp

+0

@HasanTahsin, 어떤 방법으로 시도했는데 작동하지 않습니까? 'SSLSocketFactory'에서'createSocket (String host, int port, InetAddress localHost, int localPort)를 호출하는 것은 길입니다. 왜 그렇게하는 것이 더러운 방법일까요? – Bruno

관련 문제