none
TCP: Client sendet Nachrichten nach dem Schließen RRS feed

  • Frage

  • Hallo,

    ich habe einen funktionstüchtigen Chat programmiert. Ich benutze die Socket-Klasse (hab's auch mit TcpListener und TcpClient versucht haut aber nicht so gut hin ) und als Protokolltyp benutze ich TCP.

    Mein Problem: Trennt sich der Client vom Server erhält der Server andauernd Nachrichten, ohne Inhalt (also Nothing bzw. ""). Eigentlich habe ich den Client sauber geschlossen:

    Client.Shutdown(Shutdown.Both)
    Client.Close

    Aber sobald die Shutdown()-Methode aufgerufen wird erhält der Server einige "leere Nachrichten", sobald die Close()-Methode aufgerufen wird erhält er durchgehend diese Nachrichten.

    Wie kann man das jetzt beheben?

    Danke schon im Voraus


    Gruß, Bolzen PS: Ich programmiere mit VS12(Desktop) und VS10


    • Bearbeitet Bolzen Donnerstag, 18. April 2013 16:39
    Mittwoch, 17. April 2013 15:57

Alle Antworten

  • Hallo,

    bei "funktionstüchtig" sollte so etwas nicht passieren ;)

    Ohne den Code zu sehen, kann man nur raten:
    Hast Du den Stream, den man über GetStream erhält, zuvor geschlossen.

    Gruß Elmar

    Mittwoch, 17. April 2013 16:10
    Beantworter
  • Hallo Elmar,

    ich versende die Daten mit der Send()-Methode und erhalte sie mit der Receive()-Methode. Ich benutze soweit ich weiß keine Streams. Ich habe einen Teil des Codes in eine Klassenbibliothek ausgelagert. Vielleicht könnte das ein Problem darstellen?


    Gruß, Bolzen PS: Ich programmiere mit VS12(Desktop) und VS10

    Mittwoch, 17. April 2013 17:33
  • Hallo Bolzen,

    ob Du den TcpClient - da wäre es der Stream, oder aber die Socket-Klasse verwendest, bleibt am Ende gehüpft wie gesprungen; denn der NetworkStream verwaltet ein Socket:

    Schließen solltest Du es in allen Fällen.

    Egal ist wiederum, wo sich der Code befindet.
    Ohne weiteres zu sehen kann man aber kaum mehr sagen.

    Schaue Dir mal mit dem SysInternal Tool TCPView an, was Deine Verbindungen so veranstalten.

    Gruß Elmar

    Mittwoch, 17. April 2013 17:53
    Beantworter
  • Hallo,

    ich schreibe den Code von meinem Projekt nochmal neu in ein Anderes (geht schnell). Wenn es dann wieder das gleiche Problem gibt, werde ich den gesamten Code hier posten. Wenn es funktioniert, dann hat es wahrscheinlich mit noch ein paar Anderen Dingen zu tun.


    Gruß, Bolzen PS: Ich programmiere mit VS12(Desktop) und VS10

    Samstag, 20. April 2013 04:36
  • Hallo,

    hat Du denn zumindest ansatzweise eine Vermutung was falsch läuft?
    Ohne die bringt ein Neuschreiben relativ wenig.

    Wenn das Ganze umfangreicher ist solltest Du das Projekt auf SkyDrive ablegen

    Gruß Elmar

    Samstag, 20. April 2013 05:29
    Beantworter