Einzelnen Beitrag anzeigen

Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Sockets verwalten (WSAAsyncSelect vs WSAEventSelect)

  Alt 20. Jul 2008, 13:28
Zitat von Apollonius:
WSAWaitForMultipleEvents gibt dir nicht das auslösende Event-Handle zurück, sondern den Index. Wenn du also zwei Listen hast, in der einen die Events, in der anderen die Sockets, kannst du die erste an WSAWaitForMultipleEvents übergeben, welches dir den Index des signalisierten Events zurückgibt. Diesen Index kannst du nun verwenden, um mit der zweiten Liste den Socket anzusprechen.
Das ist ja eine simple Lösung Im MSDN Beispiel ist es ganz ähnlich. Das ganze wurde aber noch mit WSAGetOverlappedResult verknüpft... leider versteh ich da den Sinn nicht. Brauch ich das auch?
Zitat von Apollonius:
Bezüglich WSAEnumNetworkEvents hast du grundsätzlich Recht, aber Select sagt dir nichts zu FD_CLOSE, FD_ACCEPT und einigen anderen Ereignissen.
Auf ein Accept könnte man doch schließen wenn man gerade mit dem Listen-Socket arbeitet und bei einem Close liefert recv laut MSDN den Fehler WSAECONNRESET. Evtl. könnte man ja auch nochmal WSAEnumNetworkEvents für das entsprechnede Socket aufrufen... dann spart man sich auch die Schleife.

So wie ich das nun sehe haben sich da zwei Ansätze rauskistallisiert (Danke dafür erstmal!). Ist eine der Lösungen der anderen aus bestimmten Gründen vorzuziehen?
Jan
  Mit Zitat antworten Zitat