2012-09-29 11 views
1

Java에서 SOCKS (v4/v5) 프록시를 통해 http 요청을 만들려고합니다.자바 소켓 소켓 소켓 오류

Socket sock = new Socket(); 
InetSocketAddress remoteProxyAddress = new InetSocketAddress(proxy ip, proxy port); 
sock.connect(remoteProxyAddress, connTimeout); 

InputStream in = sock.getInputStream(); 
OutputStream out = sock.getOutputStream(); 

out.write(0x04); 
out.write(0x01); 
out.write((endpoint.getPort() >> 8) & 0xff); 
out.write((endpoint.getPort() >> 0) & 0xff); 
out.write(endpoint.getAddress().getAddress()); 
out.write(0x0); 
out.flush(); 

을 그리고 여기가 프록시 서버에서 읽은 부분을 제공 : 위키 백과 양말 통신 프로토콜에 대한 책을 읽은 후, 나는이 코드 조각을 togheter 뒀다. 문제는 응답이 항상 "-1"입니다.

Firefox에서 프록시를 사용해 본 결과 완벽합니다. 그래서 ... 문제는 내 앱에 있습니다.

아무도 도와 줄 수 있습니까? 감사합니다.

+0

왜? Java는 이미 SOCKS 프록 싱을 지원합니다. 직접 쓰지 않아도됩니다. 자세한 내용은 Javadoc/기능/네트워킹 안내서를 참조하십시오. – EJP

+0

예 ... 이미 SOCKS를 지원하지만 전체 VM에 있습니다. 다른 프록시 서버에서 여러 개의 동시 연결이 필요합니다. –

+0

java.net 프록시를 참조하십시오. – EJP

답변

0

연결하려는 서버가 Socks v5 프로토콜 만 지원한다고 생각하지 않습니까?

연결 요청에 문제가 없습니다. 서버에서 v4를 사용하도록 설정되어 있으면 코드가 작동해야합니다. 나는 매우 성공적으로 successfuly 구현을 사용하고 있습니다.

또한이 Socket() 생성자를 살펴 봐야합니다. 필요에 따라 충분할 수 있습니다. JRE 1.6 및 JRE 1.7 모두에 존재합니다.

+0

v5 프로토콜을 사용해 보았습니다. 같은 결과. –

+0

이것은 정말로 이상합니다. 썬의 임명을 시도 했습니까? – Serge

+0

이 코드의 시작 부분에서 endpoint.getPort() 및 endpoint.getAddress(). getAddress()의 실제 값을 확인할 수 있습니까? – Serge