2014-06-15 5 views
0

데이터를 여러 클라이언트 (동일한 WiFi 네트워크에있는 다른 컴퓨터)로 보낼 수있는 네트워킹 모듈을 포함하려는 어플리케이션이 있습니다. 이 응용 프로그램은 매 시간마다 각 클라이언트에 대한 이미지 데이터를 생성하고이 데이터를 동일한 WiFi 네트워크에있는 10 개의 다른 클라이언트로 보내야합니다. 모든 클라이언트에 대한 데이터 전송이 완료되면 모든 클라이언트가 동시에 화면에 데이터를 표시해야합니다.서버에서 여러 클라이언트로 순차적으로 데이터 전송

저는 네트워킹 모듈을 일찍 개발하지 않았으며 이에 대한 경험이 거의 없습니다. 처음으로 검색 한 결과, 어떻게 든 모든 클라이언트에게 먼저 데이터를 전송하고 데이터를 동시에 표시 할 수있는 클라이언트 용 신호를 브로드 캐스트해야한다는 사실이 나타났습니다. 이런 식으로 따라야하는 접근 방법에 대한 아이디어를 얻고 싶습니다. 서버가 어떻게 이미지 데이터를 모든 클라이언트에 보내겠습니까?
필자의 경우, 신뢰할 수있는 데이터 전송보다 시간이 많이 소요되므로 UDP를 사용하여보다 빠른 전송을 할 수 있습니다. 대기열 방식으로 클라이언트에 데이터를 보낼 수 있지만 네트워크의 어떤 클라이언트가 데이터를 기다리고 있는지 알 수있는 메커니즘이 있습니까? client-register-with-server 종류의 것을 통해 데이터를 전송해야하는 모든 클라이언트를 기록 할 수 있습니까? UDP에서 client-register 일이 가능합니까? 내 응용 프로그램을 통해

, 나는 특정 포트에 UDP 서버 소켓을 만들 수 있습니다 -하지만 어떻게 여러 클라이언트가 순차적으로 (. 모든 클라이언트가 OBV를 함께 통지 할 수 없음)에 대한 내 서버에 통지 할 것입니다 그들의 네트워크 가용성 및 호스트 주소/포트를 기록하는 방법은 무엇입니까?

답변

1

또 다른 접근 방식 : 사용자 수와 동일한 수의 스레드를 생성하고 스레드 풀에서로드하십시오. 각 클라이언트에 대해 하나의 스레드가 할당되며 이미지를 보내고 각각에 대해 TCP 리스너를 갖습니다. 서버에서 데이터 검색을 수신 대기하는 클라이언트.

0

나는 데이터를 필요로하는 경우 를 통해 UDPTCP의 사용을 옹호 충분할 것이다, 그렇지 않으면 안정적으로 UDP를 전송 할 수 있습니다. 귀하의 경우에는 이미지 데이터가 안정적으로 전송되어야하므로 TCP을 사용하십시오. 여러 클라이언트를 다루는 경우 응답 성이 좋으므로 데이터를 청크로 나누어 라운드 로빈 또는 클라이언트 요청 대기열의 가장 짧은 첫 번째 스케줄링을 사용하여 네트워크를 통해 전송해야합니다. 클라이언트 측에서 데이터를 수집하고 전체 데이터를 기다리는 대신 렌더링합니다. 동적 렌더링을 수행하려면 PNG 또는 JPEG 파일 형식을 사용하십시오. 필요한 경우 멀티 스레딩을 사용하십시오.

+0

응답 해 주셔서 감사합니다. 필자의 경우에는 신뢰할 수있는 데이터 전송보다 시간이 많이 소요되므로 UDP를 사용하여보다 빠른 전송을 할 수 있습니다. 귀하의 응답에서 데이터를 클라이언트에 대기열 방식으로 전송할 수 있음을 알고 있습니다. 네트워크에서 어떤 클라이언트가 데이터를 기다리고 있는지 알 수있는 메커니즘이 있는지 묻고 싶습니다. 클라이언트가 데이터를 전송해야하는 모든 것을 기록 할 수있는 일종의 '클라이언트 등록 - 서버 - 서버'가 있습니까? UDP에서이 '클라이언트 레지스터'가 가능합니까? – user1240679

+0

@ user1240679 예 연결을 만들 때마다 클라이언트를 참조하는 연결에 대한 특수 소켓 설명자를 만들 수 있습니다. 레지스트리에는 UDP 패킷을 보낼 수있는 모든 소켓 설명자가 들어 있습니다. 나는 C#에 대해 전혀 모르지만 C++은이 시설을 가지고있다. –

+0

여러 클라이언트가 네트워크상의 가용성에 대해 내 서버에 순차적으로 (모든 클라이언트가 분명히 알릴 수 없음) 알리는 방법을 이해하고 내 메모를 유지하는 방법을 이해하기 위해 내 질문을 편집했다. 그들의 호스트 주소/포트의? C#과 관련된이 정보를 읽을 수있는 링크를 얻는 것이 좋습니다. – user1240679

관련 문제