Einzelnen Beitrag anzeigen

Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Sockets verwalten (WSAAsyncSelect vs WSAEventSelect)

  Alt 19. Jul 2008, 22:59
Ich vermute mal, dass der Service handgestrickt ist, also ohne VCL. Dann würde ich WSAEventSelect nehmen.
Aus dem Event den Socket zu finden, ist kein Problem. Du speicherst in einer Liste die Sockets und die Event-Handles. WSAWaitForMultipleEvents gibt bei Erfolg den Index des Events, und damit des Sockets, zurück.
Du könntest aber auch ein globales Event statt einem pro Socket verwenden. Wenn das Event signalisiert wird, kannst du mit der Funktion Select herausfinden, in welche Sockets du schreiben kannst und bei welchen Daten anliegen. Oder du rufst zu jedem Socket WSAEnumNetworkEvents auf. Du würdest damit viele Events sparen, was in jedem Fall zu begrüßen ist. Threads kannst du dir eigentlich nur leisten, wenn du wenige Sockets hast. Threads benötigen eine ganze Menge Ressourcen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat