Sockets, select(), connect() - Möglich?



  • Hi,

    man kann ja z.B. select() einsetzen um mehrere Clients zu verwalten. Jetzt brauche ich select() für folgendes Szenario:

    Ich möchte connect() erst aufrufen, wenn auch connected werden kann, da mein Programm ansonsten hängt, weil ein Mutex es ausbremst...

    Kann ich das mit select() lösen?

    In einem Thread:

    select(blaaa, ...);
    
    if (FD_ISSET(client[i], &blaaa))
    {
     connect();
    }
    

    Ist das möglich? Oder wie würdet ihr das Problem lösen? Mir ist einfach wichtig, dass in einem Thread eine connect Funktion aufgerufen wird, die nicht blockiert, da sonst ein anderer Thread wegen des Mutexs nicht weiterarbeiten kann.



  • - Socket in den Non-Blocking Mode setzen (ioctlsocket)
    - connect aufrufen, kehrt sofort zurück
    - Socket mit select auf writability testen



  • Lies doch die Doku (MSDN) zu select() und connect() - da steht dann genau das drinnen wonach du fragst.



  • Hilfeeeee schrieb:

    Hi,

    man kann ja z.B. select() einsetzen um mehrere Clients zu verwalten. Jetzt brauche ich select() für folgendes Szenario:

    Ich möchte connect() erst aufrufen, wenn auch connected werden kann, da mein Programm ansonsten hängt, weil ein Mutex es ausbremst...

    Kann ich das mit select() lösen?

    In einem Thread:

    select(blaaa, ...);
    
    if (FD_ISSET(client[i], &blaaa))
    {
     connect();
    }
    

    Ist das möglich? Oder wie würdet ihr das Problem lösen? Mir ist einfach wichtig, dass in einem Thread eine connect Funktion aufgerufen wird, die nicht blockiert, da sonst ein anderer Thread wegen des Mutexs nicht weiterarbeiten kann.

    Sorry, aber so proggt seit Winsock2 kein Mensch mehr. Siehe WSA-Konstukte um WSAAccept, WSAAsyncSelect und WSAEventSelect.



  • CStern schrieb:

    Sorry, aber so proggt seit Winsock2 kein Mensch mehr.

    Sorry, aber das ist Blödsinn.


Anmelden zum Antworten