2017-11-21 21 views
1

다른 여러 가지 멀티 캐스트 주소에서 지속적으로 데이터를 전송해야하는 서버를 작성하고 있습니다. 전송되는 패키지는 언급 된 주소 사이를 전환 할 클라이언트 측 (응용 프로그램)에서 수신 할 수 있습니다.신속하게 멀티 캐스트 소켓을 구현하는 방법은 무엇입니까?

서버 측 쓰기에 Perfect (https://github.com/PerfectlySoft/Perfect)를 사용하고 있지만 Perfect-Net 모듈을 사용하거나 CocoaAsyncSocket을 사용하지 않아도됩니다. 신속한 방법을 사용하여 발신자와 수신자를 모두 구현할 수 있습니까? 모든 스 니펫이 유용 할 수 있습니다.

저는 멀티 캐스팅에 대해 읽었습니다. 수신자에 관해서는 대부분의 언어 (예 : java 또는 C#)에서 수신자가 포트 번호와 멀티 캐스트 IP 주소를 표시한다는 것을 알았습니다. 서버와의 연결이 이루어지고 있습니까? 소켓이 실제 서버 ip-address에 언제 바인딩합니까? 사전

답변

1

에서

덕분에 우리는 TCP/IP 스택 만 IP 및 UDP 지원 방송과 멀티 캐스트에 대해 이야기합니다. 둘 다 비 연결형이기 때문에 특별한 멀티 캐스트 주소로만 송수신 할 수 있지만 바인드 및 연결은 볼 수 없습니다. (a) 프로토콜은 언어에 구애받지 않으며 (b) 대부분의 구현은 BSD 소켓 인터페이스와 호환되도록 노력할 때 합리적인 노력을하기 때문에 다른 언어로 볼 수 있습니다.

진정한 멀티 캐스트를 원하면 설정 옵션을 허용하는 소켓을 신속하게 구현해야합니다. 이 작업의 일반적인 이름은 setsockopt입니다. 멀티 캐스트 발신자 측은 발신자 인 needs to be added to a multicast group 인 동안 기본 UDP 소켓 (IP가 아닌 UDP 사용을 권장 함) 이외의 것을 필요로하지 않습니다. 이 Python example 꽤 많이 설명합니다.

그러나 라우터는 브로드 캐스트 및 멀티 캐스트를 라우팅하지 않습니다. 따라서 인터넷을 통해 사용할 수 없습니다. 프로젝트에서 인터넷을 사용해야하는 경우 클라이언트가 브라우저 인 경우 TCP 또는 웹 소켓을 사용하고 수동으로 "그룹"에 메시지를 보내도록 권합니다.

1

실제로 서버가 클라이언트 측 구독자에게 라이브 스트림을 게시 할 수있게 해주는 Perfect-Kafka 또는 Perfect-Mosquitto - Message Queue가 필요합니다. 낮은 수준의 소켓은 쉽게 요구 사항을 충족시키지 못합니다.