none
Socket trennen RRS feed

  • Frage

  • Guten Tag, 

    ich habe schon seit Ewigkeiten ein Problem. Ich arbeite an einer Serveranwendung, mit welcher sich Clients also verbinden können, Daten senden und empfangen können und dementsprechend auch wieder trennen müssen. An sich funktioniert alles, bis zu dem Punkt des Trennens. Ich hab einfach keine Ahnung, wie es funktioniert und hoffe hier von jemanden der Ahnung hat Hilfe zu bekommen. Ich weiß nicht genau wie ich es angehen soll, habe also auch keinen wirklichen Ansatz, alles was ich habe ist das: 

    temporaryClientSocket.Disconnect( true );
    temporaryClientSocket.Close( );
    temporaryClientSocket = null;

    Aber ich glaube so ganz richtig ist das nicht. Kann mir wer helfen? (Die Definiton der Socketvariable ist diese:

    Socket serverSocket = new Socket( AddressFamily.InterNetwork , SocketType.Stream , ProtocolType.Tcp );

    Grüße

    Maxim H.

    Dienstag, 20. September 2016 17:33

Antworten

Alle Antworten

  • Hallo Maxim,

    vor dem Close sollte man Shutdown aufrufen, damit die Daten übertragen und eine Antwort empfangen wird.

    Einfache Beispiele, die das Vorgehen zeigen, findest Du unter Socket Code Examples.

    Gruß Elmar

    Dienstag, 20. September 2016 18:32
    Beantworter
  • Hallo Maxim,

    vor dem Close sollte man Shutdown aufrufen, damit die Daten übertragen und eine Antwort empfangen wird.

    Einfache Beispiele, die das Vorgehen zeigen, findest Du unter Socket Code Examples.

    Gruß Elmar

    Also sozusagen, beim Client (welcher sich trennen will), das Disconnect() weglassen und dafür nur Shutdown und Close verwenden - hab ich das richtig verstanden?
    Dienstag, 20. September 2016 18:38
  • Hallo Maxim,

    hast Du richtig verstanden, Disconnect wird implizit von Shutdown aufgerufen. Nur das Shutdown eben mehr tut als nur die Verbindung trennen. Eine detaillierte Beschreibung liefert die Windows Funktion shutdown, die von .NET aufgerufen wird. Als Background Graceful Shutdown, Linger Options, and Socket Closure.

    Gruß Elmar

    • Als Antwort markiert Maxim H Dienstag, 20. September 2016 20:42
    Dienstag, 20. September 2016 20:23
    Beantworter