Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TCP multicast and multithreading

I need to come up with clients that can multicast to other clients reliably. That implies I'll be using TCP to connect reliably between clients within a multicast group. Doesn't that come up to n^2 number of connections? That seems a little silly to me. Wouldn't/shouldn't there be a way to more easily multicast with reliability?

EDIT: UNIX/C

EDIT: i didn't clarify how multithreading comes into play. but if i was to open up n^2 connections, i figured, i'd be multithreading and that's even more complication than i would want.

like image 347
Fantastic Fourier Avatar asked Jan 23 '23 10:01

Fantastic Fourier


2 Answers

There are several reliable multicast solutions.

  • DDS (Data distribution service)
  • Norm Protocol
  • PGM

I've tried the first two ones.

Norm is simple, works like standard udp multicast but incorporates nacks... excelent if you do not need more. There are some implementations that aslo support bandwidth adaptation and other improvements.

DDS is a step forward. It's really great (I know the RTI implementation and it works great) and has a lot of capabilities as well as a very good though design. It's based on reliable and fault tolerancy and there's an open implementation.

By the way, at least DDS and NORM do not require n^2 connections. They work like multicast udp.

like image 144
Jorge Córdoba Avatar answered Feb 19 '23 17:02

Jorge Córdoba


Depending on your target platform....

You could take a look at Pragmatic General Multicast. This is, as I understand, what Microsoft MSMQ and Tibco Rendezvous use and it can be accessed via Winsock (see: http://msdn.microsoft.com/en-us/library/ms740125(VS.85).aspx).

like image 42
Len Holgate Avatar answered Feb 19 '23 18:02

Len Holgate