[MFC] CAsyncSocket als multicast listener *

Pagina: 1
Acties:

  • chrisO
  • Registratie: Mei 2003
  • Laatst online: 03-04 13:39
Ik probeer met CAsyncSocket de receiving socket voor een mulitcast applicatie te creeren.
Alles werkt goed zolang ik mijn applicatie maar opstart VOORDAT ik de applicatie van derden in client of server modus zet. Als ik deze namelijk in client of server modus zet VOORDAT ik mijn applicatie start, dan kan ik met mijn applicatie de receiving socket niet meer creeren omdat de port dan al in gebruik is, maar andersom lukt het de applicatie van derden wel weer om de port die ik gebruik heb ook te gebruiken.
mijn vraag is dus hoe kan ik een port die in gebruik is ook gebruiken om berichten te ontvangen?
tijdens het creeren van de receiving socket m.b.v.

CAsyncSocket::Create(p_Port, SOCK_DGRAM, FD_READ)

krijg dus een error die wordt veroorzaakt omdat de port (p_Port) al in gebruik is.
een andere port gebruiken is ook geen optie, want dan ontvang ik geen berichten meer van de andere applicatie.

( ja er mist een 'c' in AsyncSocket' in de topic titel, maar dat zag ik dus te laat....)

[ Voor 5% gewijzigd door chrisO op 05-12-2003 12:49 ]


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 04-04 13:21
Je mioet dan SO_REUSEADDRESS gebruiken.

Overigens zijn de socket implementaties van MFC behoorlijk ranzig. Weet je zeker dat je die wilt gebruiken ?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • The End
  • Registratie: Maart 2000
  • Laatst online: 04-04 16:14

The End

!Beginning

farlane schreef op 05 december 2003 @ 13:29:
Je mioet dan SO_REUSEADDRESS gebruiken.

Overigens zijn de socket implementaties van MFC behoorlijk ranzig. Weet je zeker dat je die wilt gebruiken ?
Ja idd. Je kan beter je eigen socket implementatie schrijven.

Maar via CAsyncSocket kan het volgens mij wel...

code:
1
2
3
4
5
CAsyncSocket Sock;
DWORD          Option = 1;
Sock.Create(0,SOCK_DGRAM, FD_READ); //Laat MFC de poort kiezen
Sock.SetSockOpt(SO_REUSEADDR,(void*)&Option,sizeof(DWORD));
Sock.Bind(p_Port,NULL);

  • chrisO
  • Registratie: Mei 2003
  • Laatst online: 03-04 13:39
SO_REUSEADDRESS gebruikte ik dus al, en als ik MFC zelf de port laat kiezen

Create(0, SOCK_DGRAM, FD_READ);

Dan kiest MFC dus een andere port dan p_Port en dan ontvang ik dus geen msg's meer als de andere applicatie de server is....

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 17-12-2025

curry684

left part of the evil twins

Lees ***** Lees dit! Over topictitels in P&W ***** eens... 1 woord aan topictitel met 2 spelfouten en compleet niet de lading dekkend is niet echt 'het visitekaartje om je topic te openen... :/

Professionele website nodig?


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 04-04 13:21
chrisO schreef op 05 december 2003 @ 15:23:
SO_REUSEADDRESS gebruikte ik dus al, en als ik MFC zelf de port laat kiezen

Create(0, SOCK_DGRAM, FD_READ);

Dan kiest MFC dus een andere port dan p_Port en dan ontvang ik dus geen msg's meer als de andere applicatie de server is....
Waar in je voorbeeld staat dan dat je SO_REUSEADDR gebruikt ? Je hebt alleen een create waarin je een poortnummer meegeeft, ik zie geen opties staan en ook geen bind naar een poort.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1