Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

03.05.2009, 16:16

Prüfen ob Client noch verbunden ist

moin,
ich wollte mal wissen wie man mit winsocks prüfen kann ob ein client noch mit dem server verbunden ist.
also ob es da eine funktion für gibt oder ob ich die selber schreiben muss.

mfg nekturion

2

03.05.2009, 16:18

Sofern du TCP benutzt wird dein Socket ungültig.
Bei UDP gibt es keine Verbindung also bekommst du es nicht mit,

Bei irgendwelchen libs kommt es immer darauf an.

3

03.05.2009, 16:24

Also kann man immer mit z.b.

C-/C++-Quelltext

1
2
3
4
5
SOCKET socket_deskriptor ;
if ( socket_deskriptor < 0 )
{
cout << "Client offline" ;
}


einfach überprüfen ob der client noch verbunden ist?

4

03.05.2009, 16:24

bei send

Zitat von »"http://www.c-worker.ch/tuts/wstut_op.php"«

Rückgabewert: Anzahl der gesendeten Bytes oder SOCKET_ERROR bei einem Fehler.


bei recv

Zitat von »"http://www.c-worker.ch/tuts/wstut_op.php"«

Rückgabewert: Anzahl der empfangenen Bytes, 0 falls die Verbindung vom Partner getrennt wurde oder SOCKET_ERROR bei einem Fehler.


Eine Callbak für Verbindungsabbruch gibt es meines Wissens nach nicht.
Die Meisten benutzen aber zum empfangen einen Thread in einer Endlosschleife, der ständig auf Daten wartet. Dieser bekommt dann bei recv den SOCKET_ERROR bei Verbindungsabbruch.
Damit solltest du gut arbeiten können.

Ich vermute mal, das du bei Verwendung von select für den entsprechenden Socket auch einen SOCKET_ERROR bekommst.

5

03.05.2009, 16:57

Ok danke

6

12.05.2009, 04:11

Zitat von »"chriss"«

bei send
Eine Callbak für Verbindungsabbruch gibt es meines Wissens nach nicht.

Geht nicht WSAAsyncSelect zusammen mit FD_CLOSE?

Werbeanzeige