2014-01-25 3 views
0

여러 클라이언트의 연결을 허용하는 TCP 서버를 작성 중이며이 서버는 실행중인 시스템의 데이터를 수집하여 연결된 모든 클라이언트로 전송합니다.브로드 캐스트 서버

이 상황에 가장 적합한 디자인 패턴은 무엇입니까?

예제 모든 연결을 배열에 넣은 다음 배열을 반복하여 각 클라이언트에 하나씩 데이터를 보냅니다. 장점 : 구현이 매우 쉽습니다. 단점 : 많은 양의 데이터를 처리 할 때 효율성이 떨어집니다.

답변

0

더 쉬운 방법은 기존 소프트웨어를 사용하여이를 수행하는 것입니다 ... 예를 들어 https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=d5bedadd-e46f-4c97-af89-22d65ffee070을 사용하십시오.

직접 작성하려는 경우 연결을 관리하는 목록 (링크 된 목록)이 필요합니다. 여기

하면 많은 양의 데이터를 처리하려면 서버 http://examples.oreilly.com/jenut/Server.java

의 예입니다, 기술 중 하나는 서버 단에서 가입자의 각각에 관련된 큐를하는 것입니다. 다중 스레드 프로그램은 해당 대기열에서 클라이언트로 데이터를 보낼 수 있습니다.

0

예를 들어 ACE 프로젝트에서 분산 처리와 서버를 위해 많은 패턴이 개발되었습니다 : http://www.cs.wustl.edu/~schmidt/patterns-ace.html. 디자인은 데이터가 수신되었거나 읽혀질 수 있거나 버퍼가 비워졌고 더 많은 데이터가 기록 될 수 있음을 알리는 이벤트를 중심으로 집중 될 수 있습니다. 적어도 32 비트 주소 공간이 적용되는 날에는 스레드가있는 것보다 더 많은 열린 연결을 가질 수 있으므로 일반적으로 안전하게 읽고 쓸 수 있다고 발표 한 이벤트를 기다리는 스레드 수가 적습니다. 다른 쪽이 공동 작동 할 때까지 스톨없이 이것은 이벤트 나 select() 또는 poll()과 같은 호출에서 종료 될 수 있습니다. 패턴은 http://zguide.zeromq.org/page:all#-MQ-in-a-Hundred-Words과도 연관됩니다.

관련 문제