Winsock: feststellen, ob Verbindungsaufbau abgeschlossen ist?
-
Hoi,
ich hab noch nicht so ganz gerafft, wie ich feststellen kann, dass der Versuch, eine Verbindung aufzubauen, beendet ist.
Ich benutze die Funktion connect und mein Socket ist im Non-Blocking Mode. Ich weiss, dass ich mit select() feststellen kann, ob ein Socket connected ist, aber ich weiss nicht, ob bei 'nicht verbunden' jetzt noch versucht wird, die Verbindung aufzubauen, oder ob der Versuch schon aufgegeben wurde, weil z.B. der Host nicht erreichbar ist.Also wie kann ich feststellen, ob der Versuch fehlgeschlagen ist und warum? Ich hab dazu in der MSDN noch nichts gefunden. Ein 'poll' hab ich bis jetzt vergeblich gesucht.
-
WSAAsyncSelect ist eher was du brauchst. Bei einem neuen Event, wird jedesmal eine Nachricht an dein Fenster geschickt (vorausgesetzt du hast ein Fenster
). Dabei sind die oberen 16 Bit des LPARAM's, die Fehlernummer. Steht allerdings alles in der MSDN:
[msdn]WSAAsyncSelect[/msdn]
-
Ja, diese Möglichkeit ist mir bekannt. Nur hab ich irgendwie designtechnisch ein Problem damit, weil ich vorerst mal ein Konsolenbasiertes Chat-Programm (zum Test!) schreiben wollte, dass aber asynchron die Verbindung aufbauen soll.
Außerdem gefällt mir das mit den Windows Messages aus Gründen der Kapselung nicht besonders gut, insbesondere, wenn man mehrere Socket-Objekte hat.