Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Client- Socket reagiert nicht richtig

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.04.2005, 10:31 Uhr
~__tobi__
Gast


Hallo,

ich habe ein Problem mit meinen Sockets:

Ich habe mir einen Client geschrieben, der mithilfe der select()- Anweisung seinen Socketport überprüft. Wenn Daten ankommen, werden sie gelesen und wenn das Serverprogramm beendet wird, merkt das auch der Client durch den Rückgabewert von -1 der recv()- Funktion.

Doch leider merkt der Client nicht, wenn ich den Serverport in der Serversoftware einfach schließe, das heisst der Client müsste in diesem Falle 0 als Rückgabewert der recv()- Funktion erhalten. das tut er aber nicht - nicht mal die select- Funktion reagiert auf das Schliessen des Serverports.

Ich schliesse meinen Serverport erfolgreich (Rückgabewert =0) durch das Aufrufen der Funktion closesocket(Serverport). Anschliessend rufe ich noch die Funktion WSACleanup() auf und erwarte das der Client das auch merkt - wie muss ich den Port richtig schliessen??

Danke & gruß
Tobi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.04.2005, 11:54 Uhr
Th



Vor dem closesocket() noch ein shutdown(s, SD_BOTH) einfügen, das könnte helfen...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.04.2005, 13:27 Uhr
~__tobi__
Gast


Hallo,

ich hab den Fehler gefunden... ich habe nur in der Serversoftware den Serversocket geschlossen - nicht die angenommenen Socketverbindungen der Clients. Somit konnten die gar nicht mitkriegen, dass ich irgendwas geschlossen habe - erst wenn ich die Software ganz beende...

ja... bin mal wieder schlauer geworden :-)

@Th: Ja, normalerweise ist das der "saubere" Weg: erst "shutdown()", dann "closesocket()" und denn "WSACleanup()"

Danke & GRuß

Tobi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.04.2005, 13:44 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


shutdown verhindert nur weitere kommunikation, das ist alles. sauberer ist es dem client eine "shutdown"-nachricht zu senden, und dann dem client die verbindung trennen lassen.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: