connect(...) ich dreh gleich durch...
-
Also ich hab hier ein:
// ok, connect! int res; if((res=connect(cli, (sockaddr*)&addr, sizeof(SOCKADDR_IN)))==-1){ char test[88]; itoa(res, test, 10); MessageBox(0, test, 0, 0); return false; }
Meine MessageBox liefert "-1", also dürfte die Verbindung fehlgeschlagen sein.
Laut meinem Server bin ich aber verbunden und ein FD_CONNECT bekomme ich auch. Was ist da los?
-
Benutzt Du einen nonblocking socket ?
Was meint denn WSAGetLastError() dazu ?
-
FD_CONNECT gibts auch wenn die verbindung nicht zustande gekommen ist, allerdings mit dem unterschied, das in LPARAM ein error-code zu finden ist, den du so abfragen kannst:
wError = WSAGETSELECTERROR(lParam);
nur wenn wError = 0 ist, hat die verbindung geklappt.
rocknix ///
-
Original erstellt von geeky:
**Benutzt Du einen nonblocking socket ?Was meint denn WSAGetLastError() dazu ?**
Ja ich benutze halt WSAAsyncSelect
Und das FD_CONNECT bekomme ich schon weil es funtioniert hat, ich bin ja laut Server verbunden!cu para
-
Ich bekomme WSAWOULDBLCK
???Das bekomme ich wenn kein Server läuft und wenn er läuft auch????
Jetzt blick ich nichts mehr!
-
Das heißt, dass dieser call das programm blockieren würde. Da du aber ein nonblocking socket verwendest, kehrt die Funktion sofort zurück; und damit dein Programm nicht unwissend bleibt, liefert WSAGetLastError() WSAEWOULDBLCK. Das ist kein Fehler, das heißt einfach nur, dass der connect-Aufruf möglicherweise noch nicht fertig ausgeführt ist.
-
Hehe, genau das hatte ich vermutet
-
Das heisst ich muss auf dieses WSAWOULDBLK bei FD_CONNECT prüfen und weiss dann, dass ich verbunden bin? Ich mein, wie bekomm ich den nun heraus, ob es geklappt hat oder nicht?? Weil ich bekomme ja den gleichen "Fehler" wenn es nicht klappt und der Server garnet läuft!
danke!
cu para
-
Oh mann, weiss denn keiner wie ich heraus bekomme, wann ich erfolgreich mit dem Server verbunden bin??
-
Original erstellt von paranoiac.org:
Oh mann, weiss denn keiner wie ich heraus bekomme, wann ich erfolgreich mit dem Server verbunden bin??Ich glaub ich bin blöd. Steht ja oben ^ (hab ich voll überlesen)
cu para