WSAEventSelect



  • Sers,

    Also ich schreibe gerade einen Server. Da dieser nur die Konsole als Ausgabe benutzt, habe ich natürlich kein Fenster. Ich habe es über WSAEventSelect realisiert. Ich kann jetzt feststellen, wann ein Client verbinden will. Mein Problem ist jetzt allerdings das, dass ich nicht weiss von welchem Socket aus die Nachricht kommt.

    Bei WSAEventSelect bekam man den Socket aus lParam oder wParam.
    Wie geht das bei WSAEventSelect?

    Hier mein Code:

    // loop
        for(;;){
            if((rcode = WSAWaitForMultipleEvents(1, (const WSAEVENT FAR *)&event, FALSE, 10000, FALSE)) == WSA_WAIT_FAILED){
                cout << "error" << endl;
                break;
            }
    
            // check if an event exists
            if( rcode == WSA_WAIT_EVENT_0){
                // get event
                if((WSAEnumNetworkEvents(s, event, &networkEvents))== SOCKET_ERROR)
                    break;
    
                // FD_ACCEPT
                if(networkEvents.lNetworkEvents & FD_ACCEPT){
    
                    break;
                }               
            }
        }
    


  • Wenn Du nur einen Event verwendet, wird das wohl net gehen. Du musst schon für jeden Socket einen extra Event verwenden. Dann gibt Dir WaitForMultipleEvents die Nummer zurück.


Anmelden zum Antworten