2013-01-12 2 views
-2

가상 네트워크를 프로그래밍 중입니다.
전체 네트워크를 구현하고 네트워크의 특정 다른 클라이언트와 데이터를주고받을 수있는 중앙 Client 클래스가 있습니다. 이제는 네트워크를 사용하는 모든 프로그램에 Client 클래스의 단일 인스턴스를 사용하지 않을 것입니다. 들어오는 패킷과 보내는 래퍼를 처리하는 프로그램을위한 인터페이스가있어서 "로컬 TCP 서버 실행"이외의 다른 솔루션을 고맙게 생각합니다.클래스의 단일 인스턴스를 사용하는 여러 Java 프로그램

내 질문은 지금 : Java로 사용하는 모든 프로그램에 대해 하나의 클래스 인스턴스를 실행하려면 어떻게해야합니까?

+1

무엇이 문제입니까? – MrSmith42

+0

당신은 Client 클래스를 가진 일반적인 자바 라이브러리를 만들고, 각각의 자바 프로그램의 빌드 경로에 추가해야한다고 생각합니다. 그러나 @ MrSmith42는 맞습니다. 의문의 여지가 없습니다. –

+0

죄송합니다. "네트워크를 사용하는 모든 프로그램에 Client 클래스의 단일 인스턴스를 사용하지 않으려 고합니다."라는 간접적 인 질문이있었습니다. – th3falc0n

답변

0

Java에서 사용할 수있는 RMI, RMI-IIOP 또는 CORBA 기능을 사용하면 쉽게 수행 할 수 있습니다. 위에서 언급 한 기술을 사용하면 단일 시스템 (서버)에서 단일 인스턴스의 객체를 생성하고이를 원격 인터페이스로 다른 컴퓨터 (네트워크가 필요함)로 내보낼 수 있습니다. 다른 호스트에서는 "실제"인스턴스가 구현하는 인터페이스와 동일한 스텁 클래스를 가지며이 인스턴스에서 메소드를 호출 할 수 있습니다. 이 호출은 종국에 하인의 단일 인스턴스에서 원격으로 호출됩니다. may may 의견, 이것은 당신이 요구하고있는 바로 그 것이다.

더 흥미롭고 흥미로운 접근 방식에서 볼 때 Google 프로토콜 버퍼는 좋은 것처럼 보이지만 프로토콜 버퍼로 더 많은 맞춤 코드가 필요합니다. 웹 서비스는 또한 인터페이스를 내보내는 것을 허용하고 방화벽을 통과하기에 더 적합합니다 (여기에 나열된 다른 방법은 원하는 방식으로 구성 할 수있는 자신의 서버 간 대화에 더 적합합니다).

주어진 운영 체제에서 프로그램 인스턴스가 하나만 실행되도록하려면, discussed in this question과 같이 수행 할 수 있습니다. 프로그램이 고정 포트에서 수신 대기중인 경우 두 번째 인스턴스는 포트가 이미 사용되었으므로 어쨌든 제대로 시작되지 않습니다. 당신이 필요로하는 것은 당신이 양말을 묶고 종결하려고 할 때 예외를 잡는 것입니다.

+0

나는 내 영어로 약간 잘못했다고 생각한다. 네트워크에서 단일 인스턴스를 갖고 싶지 않습니다. 로컬 PC에서 내 네트워크 클라이언트의 단일 인스턴스를 보지 못했습니다. Tor와 같은 네트워크를 실제로 프로그래밍하려고합니다. – th3falc0n

+0

누가 단일 인스턴스를 갖지 못하게합니까? – h22

+0

어떻게해야할지 모르겠습니다./ – th3falc0n

관련 문제