UDP Server (Broadcast)

Tags:    c++ upd

Jeg har en UDP server og en UDP klient der kommunikere med hinanden. Jeg har tilgaengelig gjort Broadcast (SO_BROADCAST) via setsockopt() funktionen. Der er sikkert noget grundlaeggende jeg ikke helt har forstaet endnu men jeg kan ikke faa to klienter til at modtage data fra serveren paa samme tid. Skal serveren ha' tilegnet sig en speciel IP addresse for at koere og hvordan goeres dette i praksis?



4 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 9 karma
Sorter efter stemmer Sorter efter dato
SO_BROADCAST skal sættes på både klient og server. Hvis dit netværk har adressen 192.168.0.0 og netmasken 255.255.255.0 så er din broadcast adresse (den du skal sende til når du broadcaster) 192.168.0.255.

Serveren skal bindes til INADDR_ANY...IKKE til broadcast adressen.

Følgende illustrerer det:
Fold kodeboks ind/udC kode 


Bruges således. På serveren (som skal modtage en besked):
Fold kodeboks ind/udKode 


Og fra klienten, som sender beskeden:
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 03.01.2012 11:58 af Bruger #2695
Jeg har kigget dit kode igennem paa kryds og tvaers men syntes ikke jeg kan faa mit til at broadcaste. Som sagt saa vil server og klient godt snakke sammen men kun en klient! Det ville vaere GULD vaerd hvis du hurtigt kunne skimte gennem mit kode og finde fejlen. Jeg har skrevet mit kode i en lille klasse. Her er headeren til klassen:

Fold kodeboks ind/udC++ kode 


og implementation i min cpp fil ser saaledes ud:

Fold kodeboks ind/udC++ kode 


og til sidst ser min main fil saaledes ud:

Fold kodeboks ind/udC++ kode 


Paa forhaand 1000 tak :)



Indlæg senest redigeret d. 04.01.2012 11:03 af Bruger #1474
Jeg kan ikke umiddelbart se noget galt, men jeg har ikke en Windows maskine, som jeg kan teste på.

Har du tjekket med Wireshark, at der dukker noget op på den modtagende maskine ?

By the way...hvis det er en nyere Windows version er der muligvis nogle begrænsninger på brugerniveau. Har du prøvet at sende og modtage med en bruger med administrator rettigheder ?



Indlæg senest redigeret d. 09.01.2012 14:35 af Bruger #2695
Jeg har researchet lidt omkring emnet og det virker som om at Broadcast ikke rigtigt bliver brugt laengere. Sig endelig til, hvis jeg er forkert paa den! Multicast virker generalt til at vaere en mere fornuftig valg. Saa vidt jeg kan se saa bliver der sendt beskeder til alle paa netvaerket (uanset om de oensker beskederne eller ej) naar der Broadcastes. Multicast laver derimod en gruppe, hvor dem som oensker at modtage beskeder fra serveren, kan blive medlem af gruppen. Jeg kan ikke umiddelbart se nogen fordele at bruge Broadcasting fremfor Multicasting. Jeg kan fint faa Multicasting til at virke paa Windows, saa det er muligvis Windows der blokere for Broadcasting. Wiki skriver at alle Routers per default er sat til at blokere Broadcasting for at undgaa eventuelle DoS Attack eller lign. angreb som kan lamme et helt netvaerk.
Konklusion: Jeg vaelger Multicast :)

Men mange tak indsatsen!



t