Announcement

Collapse
No announcement yet.

TCP Client Refresh

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TCP Client Refresh

    Hi,
    ich kann mich ja via
    Code:
    TcpClient tmp = new TcpClient();
    tmp.Connect("192.168.100.250",80);
    verbinden.

    Wie kann ich den Client redundant machen, heißt, wenn der eine EndPoint weg ist, automatisch eine andere IP Adresse benutzt wird?
    PHP Code:
    <?php
    echo 'http://acs-it-worx.de/';
    echo 
    'http://www.youtube.com/user/ACSITWorx/'// mein YouTube Kanal
    echo '-----------------------------------------------------------------';
    echo 
    'http://www.autoservice-asberg.de/';
    ?>

  • #2
    in dem du bei Connect (und anderen Methoden) die Ausnahmen (Rückgabewerte) fängst und entsprechend reagierst, also einen neuen Server angibst und die Verbindung wieder herstellst
    Zuletzt editiert von Christian Marquardt; 29.12.2011, 09:28.
    Christian

    Comment


    • #3
      Meinst Du mit diesem try/catch?

      Hab ich bereits gemacht, und dann bekam ich folgende Fehlermeldung:
      Eine Verbindungsanforderung bezog sich auf ein bereits verbundenes Socket.
      Das Problem, was ich versuche zu beheben ist, wenn der eine Server abstürzt und keine vernünftige Trennung erfolgt, trotzdem ich mit dem selben Socket mich auf den anderen Server verbinden kann, nur die "alten" Einstellungen verworfen werden. Ich hab das schon mit überschreiben versucht, die "alten" Angaben bleiben aber trotz veränderter Angaben gleich.

      Wenn ich den TcpClient mit
      Code:
      tmp.Close();
      trenne und dann neu verbinden will, sagt der mir, dass auf eine verworfene Verbindung kein Connect ausgeführt werden kann.
      PHP Code:
      <?php
      echo 'http://acs-it-worx.de/';
      echo 
      'http://www.youtube.com/user/ACSITWorx/'// mein YouTube Kanal
      echo '-----------------------------------------------------------------';
      echo 
      'http://www.autoservice-asberg.de/';
      ?>

      Comment


      • #4
        Hab ich bereits gemacht, und dann bekam ich folgende Fehlermeldung:
        Das ist irgendwie aus deinem ersten Post nicht ersichtlich

        http://msdn.microsoft.com/de-de/libr...ent.close.aspx

        Auf Grundlage der LingerState-Eigenschaft bleibt die TCP-Verbindung möglicherweise für einige Zeit geöffnet, nachdem die Close-Methode aufgerufen wurde, wenn zu sendende Daten übrig bleiben. Es gibt keine bereitgestellte Benachrichtigung, wenn die zugrunde liegende Verbindung das Schließen abgeschlossen hat.
        Dann musst du die Zugriffeigenschaften deines Sockets nach außen kapseln und intern auf den aktuellen gültigen Socket weiterleiten. D.h. eine Read/Write Methode geht auf eine gekapselten Socket, der intern immer eine gültige Verbindung hat oder neu aufbaut
        Christian

        Comment


        • #5
          Hi,
          danke für deine Antworten.

          Ich habe mal ein bisschen weiter geproggt und anscheinend eine (vielleicht unsaubere) Lösung gefunden.
          Ich lege in einer globale Var. einen leeren TCPClient an.
          Code:
          TcpClient tmp = null;
          Wenn ich dann in der Methode drin bin, die das .Connect(..., ....) aufruft, fülle ich die leere Var mit dem Objekt.
          Code:
          TcpClient tmp = new TcpClient();
          und führe den Rest mit .Connect(..., ...) aus.

          Wenn ich nun die Verbindung schließe und mich neu verbinden möchte, mach ich einmal ein .Close(), aber auf jeden Fall setz ich die Variable "tmp" wieder auf null. Dann gibt es anscheinend keine Probleme.
          PHP Code:
          <?php
          echo 'http://acs-it-worx.de/';
          echo 
          'http://www.youtube.com/user/ACSITWorx/'// mein YouTube Kanal
          echo '-----------------------------------------------------------------';
          echo 
          'http://www.autoservice-asberg.de/';
          ?>

          Comment

          Working...
          X