Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Problem bei Socket Programmierung

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
17.03.2003, 21:47 Uhr
bIOHAZARd



Hi,

ich bastel gerade zur Übung ein kleines Chatprogramm Server/Client basiert. Der Server soll natürlich mehrere Verbindungen (=Chatter) zulassen.

Gedacht hab ich mir das so:
Der Server hat einen "m_sListenSocket" auf dem er auf Verbindungen wartet. Möchte ein Client eine Verbindung aufbauen so wird zuerst eine Instanz meiner CClient Klasse erstellt (z.B.: newClient). Diese Klasse beinhaltet eine "m_sClientSocket" Membervariable, die den Socket für diesen Client darstellen soll. Ich akzeptiere die Verbindung dann mit m_sListenSocket.Accept(newClient->GetClientSocket()) was soweit auch wunderbar funktioniert. Anschließend wird das "newClient"-Objekt - samt dem als Membervariable gespeicherten Socket, in ein CObArray geschrieben.

Nun mein Problem: Wenn ich das Clientprogramm beende und somit clientseitig den Socket mit Close() schließe, reagiert der Server nicht darauf. Also die OnClose() Funktion wird auf der Serverseite für den aktuellen Socket nicht aufgerufen.

Ich mutmaße mal das es was mit der Tatsache zu tun hat, das der verbundene Socket als Membervariable eines Objekts, das sich in einem CObArray befindet, gespeichert ist. So dass der Client beim Beenden der Verbindung eventuell keine Gegenstelle findet um diese darüber zu informieren. Vielleicht ist das aber auch schwachsinn, keine ahnung ;P

Hat jemand Ahnung wie man soetwas löst? Irgendwelche Ideen?

Auf Wunsch zippe ich das ganze MS VC++ 6 Projekt und stells zum download zu verfügung, aber vielleicht reicht der obige Text ja schon damits bei jemanden hier klingelt

EDIT:
Habe gerade folgendes bemerkt: Wenn ich mich als Client zum Server Verbinde wird beim Server korrekt die OnAccept Funktion aufgerufen, aber direkt danach auch die OnClose Funktion des Clients, also die Verbindung wird aufgebaut und unmittelbar danach wieder getrennt.

Dieser Post wurde am 17.03.2003 um 22:21 Uhr von bIOHAZARd editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.03.2003, 08:57 Uhr
bIOHAZARd



Langsam aber sicher komm ich der sache auf die spur...

Momentan scheint es darauf hinauszulaufen das ich einen korrekten Kopier-Konstruktor für meine eigene von CAsyncSocket abgeleitete Socket-Klasse brauche.

Also wenn jemand generell einen Kopier-Konstruktor für CAsyncSocket hätte, würde mir das sehr weiterhelfen...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.03.2003, 15:14 Uhr
bIOHAZARd



Habs mittlerweile so um geschrieben das ich keinen Kopier Konstruktor mehr brauche
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


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: