nonblocking connect -> select -> [ Fehler ] -> WSAGetLastError()==0 ???



  • hallo,

    ist es irgendwie doch möglich nach einem nicht blokierenden connect()
    und dem darauf folgenden select was ein TIMEOUT liefert also 0 zurück gibt
    rauszubekommen ob nun der Host die Verbindung verweigerte oder nicht erreichbar ist/war ?

    WSAGetLastError() bezieht sich ja in diesem Fall auf select.
    Die Aussage "verbindung konnte nicht hergestellt werden" aufgrund der
    Rückgabe von select() (TIMEOUT) reicht mir nicht ganz.

    mfg
    rb



  • Könntest du dazu mal ein bisschen Code posten, ich verstehe das Problem nicht. Wenn du denn Fehlerwert von connect() haben willst, schreib doch einfach WSAGetLastError hinter connect.

    (Das ist eine etwas blöde Antwort, denn ich denke darauf wärst du auch allein gekommen, aber ohne Code und genauere Beschreibung des Problems kann ich dir nicht helfen)



  • hallo,

    nein nach connect liefert WSAGetLastError() ein WSAEWOULDBLOCK, wenn der socket
    nicht blockierend ist, ist dieser Fehlerwert das normalste der Welt ...

    Die Lösung habe ich erst nun selbst gefunden, nach dem select was auf connect direkt folgt muß im Fall von Rückgabe == 0 getsockopt mit SO_ERROR aufgerufen werden. In optval steht dann 10061 oder 10065 oder sonst was drin, was in dem Fall von connect her stammt. WSAGetLastError() nach select bezeiht sich auf select und liefer immer 0.

    mfg
    RB


Anmelden zum Antworten