2011-04-11 2 views
0

서버 응용 프로그램을 실행할 필요없이 둘 이상의 클라이언트 소켓을 직접 연결하는 방법을 찾고 있습니다. 몇 가지 방법을 찾았으며 JXTA P2P 프로토콜을 찾을 수있었습니다. JXTA 이외의 대안이 있는지 알고 싶습니다.둘 이상의 클라이언트 소켓을 직접 연결하는 방법은 무엇입니까?

상호 작용하는 클라이언트의 기본 기능은 (1) 클라이언트가 다른 모든 클라이언트에게 메시지를 보내고 (2) 다른 클라이언트가 사용할 수있는 파일을 요청할 수있는 기능입니다.

내 컴퓨터 (로컬 호스트)에서 여러 응용 프로그램 인스턴스를 실행할 예정이므로 NAT 또는 방화벽을 사용하는 것이 문제가되지 않습니다.

+0

연결을 허용하거나 UDP의 경우 요청을 받으면 ** IS ** 정의에 따라 서버가됩니다. 그러므로, 당신이 원하는 것은 논리적으로 불가능한 것처럼 보입니다. – Ingo

+0

그래서 각 클라이언트는 클라이언트이고 다른 모든 클라이언트와의 연결을 유지하는 서버 여야한다는 말입니까? UDP 나 TCP가 더 좋을까요? –

+0

당신이 말하는대로 그것은 UDP와 같은 냄새를 풍깁니다. 서버는 요청을 처리하는 것입니다. 파일을 교환하려는 경우 누군가 (클라이언트)가 요청을 보냅니다. 예를 들어, 어떤 파일이 있습니까? 응답하는 사람이 서버입니다. – Ingo

답변

0

당신은 multicast sockets을 원합니다.

This question에는 구현에 필요한 모든 코드가있는 것 같습니다.

이것은 LAN에서 실행되는 응용 프로그램에만 해당되는 것으로 알고 있다고 가정합니다. 서로 다른 네트워크에서 멀티 캐스트를 지원하려면 (일반적으로 단일 대형 네트워크의 여러 세그먼트에서) 라우터 지원이 필요합니다.

+0

@Anon에 대해 설명해 주셔서 감사합니다. 그러나 LAN/네트워크를 통해 장치가 연결되지 않은 것은 무엇입니까? 그들은 어떻게 서로를 찾았습니까? – gumuruh

0

Hazelcast을 보았습니까? 거의 제로 설정, 목록, 설정,지도, 등뿐만 아니라 게시 - 구독 메커니즘과 같은 일반적인 컬렉션의 분산 구현을 제공합니다. 기본적으로 노드 간의 멀티 캐스트 통신을 사용합니다.

관련 문제