[wxWidgets] wxSocketServer und einzele Clients
-
Hi,
ich möchte gerne mit wxWidgets einen Server schreiben. Im Prinzip klappt das alles sehr wunderbar und das auf sehr einfache Weise.
Doch leider zu einfach... Denn ich möchte nur eine bestimmte Anzahl von Clients zulassen und außerdem möchte ich auf jeden Client einzeln Zugriff haben. Dafür scheint wxSocketServer jedoch nicht ausgelegt zu sein.Ich habe also folgendes gemacht:
wxSocketBase *client[MAX_CLIENTS];
Das Array im Konstruktor initlisiert und bei einem wxSOCKET_CONNECTION das Array durchwander, um im Array einen Client zu finden der disconnected ist. Okay, das klappt: Verbindung wird hergestellt, alles Bestens. Aber nachdem ich mich nun eine gewisse Anzahl(=MAX_CLIENTS) verbunden habe geht es nicht mehr, da die Verbindung nicht ordentlich getrennt wurde. Alle Sockets sind belegt und es kommt keine Verbindung mehr zu stande:
void Frame::OnSocketEvent(wxSocketEvent& ev) { wxSocketBase *socket = ev.GetSocket(); switch (ev.GetSocketEvent()) { case wxSOCKET_LOST: wxMessageBox(wxT("Verbindung geschlossen")); socket->Destroy(); break; } }
Zwar erscheint die MessageBox, aber trotzdem sind alle Sockets noch belegt. Wahrscheinlich liefert GetSocket() ein anderes Socket zurück, als das was in meinem Array ist und folglich wird das falsche Socket geschlossen?
Na ja, insgesamt scheine ich eher auf dem Holzweg zu sein...
Wie macht man sowas also mit wxWidgets richtig?
Vielen Dank,
Servy
-
Hm, schau doch mal in den samples unter socket nach.
Da ist ein Server und ein Client Beispielprogramm.Ansonsten kann ich da auch boost::asio sehr empfehlen.
phlox