LAN의 서버에 연결할 다중 클라이언트 응용 프로그램에서 작업하고 있습니다.LAN에서 클라이언트를 최신 상태로 유지하는 가장 좋은 방법은 - Java 네트워킹
모든 클라이언트는 서버의 상태를 변경하는 명령을 보낼 수 있습니다. 이 'ServerStatus'는 내가 호출 하듯이 일부 값을 가진 객체입니다.
이제 ServerStatus가 변경되면 모든 클라이언트가 즉시 알아야합니다. 내 아이디어는 다음과 같이 작동하는 것입니다.
서버는 매초 ServerStatus의 versionNumber를 사용하여 모든 수신 클라이언트에 멀티 캐스트를 보냅니다. 따라서 새 클라이언트가 멀티 캐스트 그룹에 참여하면 versionNumber가 동일한 지 확인할 수 있습니다. 그렇지 않은 경우 클라이언트는 UDP를 통해 ServerStatus의 현재 버전을 묻습니다. 클라이언트가 동일한 멀티 캐스트 그룹에 자신의 현재 (새로운) ServerStatus를 보내드립니다 ServerStatus, 서버를 변경하는 명령을 전송
은, 다른 스레드에서, ServerStatus의의 versionNumber는 여전히 매 초마다 공유된다.
여러분이이 문제를 해결하는 좋은 방법이라고 생각하십니까? 또는 너무 많은 문제가 발생합니다 ... 등
UDP 멀티 캐스트 (if if, 즉사용 가능) 좋은 방법입니다. 1 초는 "즉각"이 아니므로 클라이언트는 업데이트 요청을 멀티 캐스트하고 서버 (또는 피어도 가능)가 새로 조인 된 요청을 업데이트합니다. 유실 (또는 순서가 잘못된) 된 UDP 패킷을 처리해야 할 수도 있습니다. 이를 달성하기위한 많은 프레임 워크가 있습니다 - jgroups, aka는 몇 가지 예입니다. – bestsss