2012-06-06 6 views
0

클라이언트의 로컬 네트워크에서 클라이언트 컴퓨터에 서버가 될 수있는 Java 애플릿을 작성할 수 있습니까?Java 애플릿이 서버로 작동 할 수 있습니까?

더 구체적으로 말하면, 웹을 통한 비 웹 트래픽을 터널링하는 것입니다. 보낸 사람은 애플릿으로 보낼 것이고, 그러면 애플릿은 수신 된 데이터를 다시 서버로 전달합니다.

이런 종류의 작업이 가능합니까? 방해가 될 수있는 제한은 무엇입니까?

참고 : 애플릿이 서버에 다시 연결할 수 있지만 문제가되지 않습니다. 문제는 애플릿이 로컬 클라이언트 측 포트의 연결/데이터를 수신 할 수 있는지 여부입니다.

답변

3

부호없는 애플릿은 출처가있는 호스트에만 연결할 수 있습니다.

서명 된 애플릿은 원하는 모든 연결을 수행 할 수 있으며 tcp-ip 포트에서 수신 할 수 있습니다.

출처 : 일반적으로 http://docs.oracle.com/javase/tutorial/deployment/applet/security.html

+0

나는 로컬 클라이언트 컴퓨터에서 인바운드 연결을 수신 대기하는 것에 대해 이야기하고 있습니다. 애플릿이 온 서버로 인바운드 데이터를 전달하는 것은 HTTPS를 통해 모두 수행되므로 문제가되지 않습니다. – cdeszaq

+0

서명 된 애플릿은 tcp-ip 포트에서 수신하는 것을 포함하여 Java 응용 프로그램이 수행 할 수있는 모든 작업을 수행 할 수 있습니다. –

+0

서명되지 않은 애플릿을 사용하면 애플릿이 수신 대기 할 tcp-ip 포트를 열려고 시도 할 때 사용자에게 허용 할 것인지 묻는 메시지가 표시됩니까? 아니면 예외가 throw됩니까? – cdeszaq

0

, 그것은 할 수 없습니다.

애플릿이 보안이 제한된 환경에서 실행되는 경향이있는 한 가지 이유는 서버 소켓을 열 수 없기 때문입니다.

이러한 제한 사항을 해결하는 방법은 기본적으로 애플릿에 대한 특수 보안 정책을 지정하거나 특수 제약되지 않은 컨테이너에서 실행할 수 있습니다. 하지만 응용 프로그램의 내용을 표준 서블릿 또는 독립형 서버로 이식 할 수있는 경우 왜 귀찮을까요?

+0

애플릿에만 서명하십시오. –

+0

독립형 또는 표준 서블릿 일 수 없습니다. 가능한 한 작아야합니다. 브라우저 페이지 내에로드해야하기 때문입니다.하지만 서명 된 애플릿이라면 로컬 클라이언트의 포트를 열어 인바운드 연결을 수신 할 수 있습니까? – cdeszaq

+0

다른 사람의 컴퓨터를 통해 정보를 터널링하는 것이 중요한 이유는 무엇입니까? 당신은 자신의 컴퓨터를 통해 그것을 터널링 할 수 있습니다! 컴퓨터에 서블릿을 배포하거나 컴퓨터에서 독립 실행 형을 실행합니다. 웹 포트가 아닌 것을 듣고 요청을 웹 포트로 전달합니다. 웹 브라우저는 비열한 서버를 만듭니다. –

1

서버가 어디에도 연결되지 않습니다. 서버가 서버 소켓을 열고 수신 중입니다. 과거

까지 내가 서버 소켓이 MSIE에 제한되었다 넷스케이프 (당신이 그런 브라우저를 기억 하는가?)에서 허용 된 기억으로 :

나는 개인적으로 지난 10 년 동안 애플릿을 작성되지 않은, 그래서 현재의 브라우저에서 어떤 일이 벌어지는 지 모르지만 확인하기는 쉽습니다. 가능한 가장 짧은 애플릿을 작성하고 코드 new ServerSocket(1234).accept();init() 또는 start() 메소드에 넣으십시오. 예외가 발생하지 않으면 서버로 작동하는 애플릿을 작성할 수 있습니다. 그렇지 않으면 당신은 할 수 없습니다.

사용 가능한 모든 브라우저에서 사용해보십시오. 20 분 일하면 끝났어. 행운을 빕니다. 결과에 대해 알고 기뻐할 것입니다.

관련 문제