Sooo..... Habe Problem gelöst (Aber habe wieder ein weiteres Problem, siehe unten):
Wenn ich zuerst WSAAsyncSelect() aufgerufen habe und danach connect(), dann sendet er IMMER eine FD_CONNECT Message.
ABER wenn ein Fehler beim Verbinden aufgetreten ist, dann füllt er den WORD: wError = WSAGETSELECTERROR(lParam); mit dem error.
Und dann kann man das ganz einfach mit einer if Anweiung checken:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
|
case FD_CONNECT:
if (wError)
{
AddText("Warte auf Verbindung");
connect(s, (SOCKADDR*)&addr, sizeof(SOCKADDR_IN));
return TRUE ;
}
AddText("Verbunden mit 127.0.0.1 .!");
return 0;
|
Ohne das ich irgendwelche threads oder Schleifen brauche, weil FD_CONNECT ja immer aufgerufen wird sobald man die Funktion connect() ausgeführt hat
Jedoch bin ich mir nicht ganz Sicher was das angeht weil bei FD_CLOSE klappt das dummerweise nicht -.-
|
C-/C++-Quelltext
|
1
2
3
|
case FD_CLOSE:
AddText("Verbindung abgebrochen!");
connect(s, (SOCKADDR*)&addr, sizeof(SOCKADDR_IN));
|
Weil Wenn Client und Server miteinander verbunden sind und der Server plötzlich off geht, dann muss der Client ja weiter prüfen ob eine Verbindung besteht , falls der Server wieder online geht
Aber wenn ich in der message connect() ausführe, dann wird komischerweise keine FD_CONNECT Nachricht geschickt
Weiß vllt einer woran das liegen kann???