AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Geschlossene TCP IP Verbindung wiederherstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Geschlossene TCP IP Verbindung wiederherstellen

Ein Thema von matashen · begonnen am 16. Mai 2024 · letzter Beitrag vom 17. Mai 2024
Antwort Antwort
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
471 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Geschlossene TCP IP Verbindung wiederherstellen

  Alt 16. Mai 2024, 14:10
Hallo zusammen,

ich bin gerade dabei von einem Maschineninterface mittels TCP/IP Daten abzurufen.

Dabei ist der Service des TCP/IP Servers (Maschine) leider so gestrickt das er immer nur einen Client verbindet. Sobald ein zweiter Client eine Anfrage schickt beendet der Server die aktuelle Verbindung. Ich bekomme dann eine Exception Connectiondisconnectgracefully ... oder so. Wenn ich connect erneut aufrufe kommt aber keine neue Verbindung zustande. Warum? Muss ich den Client zurücksetzen?

Steh hier irgendwie auf den Schlauch.
Hab die Indys verwendet und Delphi 10.3

Kurzer Codesnipper, try except und das andere Gedöns vorher nachher hab ich weggelassen.
Delphi-Quellcode:
...
        if not maschinen_daten[ID].TCPIPClient.Connected then maschinen_Daten[ID].TCPIPClient.Connect;
        if maschinen_daten[ID].TCPIPClient.Connected then
          begin;
            //Anfrage an des Serversystem
            maschinen_daten[ID].TCPIPClient.socket.WriteLn(maschinen_daten[ID].sendtext.text);
...

              ab:=utf8tostring(maschinen_daten[ID].TCPIPClient.socket.readln());
...
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Geschlossene TCP IP Verbindung wiederherstellen

  Alt 16. Mai 2024, 14:51
Du sagst doch selbst, dass das System nicht mehr als einen Client gleichzeitig bedienen kann.

Wenn das merkwürdigerweise so gestrickt ist, dass der die bestehende Verbindung einfach schließt wenn jemand anderes anklopft, kannst du ja da nicht viel gegen tun. Wenn du jetzt eine neue Verbindung aufbauen willst, und der Server ist noch mit dem anderen Client beschäftigt, der dich grade rausgekegelt hat, was willst du dann tun? Warte doch mal ein bisschen (z.B. 100 - 500 ms) anstatt gleich sofort gleich wieder wild an die Tür zu klopfen.
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
471 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: Geschlossene TCP IP Verbindung wiederherstellen

  Alt 16. Mai 2024, 15:01
ich klopf grad erst nach 30 sekunden klappt nicht
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Geschlossene TCP IP Verbindung wiederherstellen

  Alt 16. Mai 2024, 15:22
Kannst du denn
1. Im Debugger prüfen, was genau falsch läuft, wo dein Programm mit einer Exception abbricht?
2. Mit einem Programm wie z.B. https://www.wireshark.org/ schauen, was wirklich über die Netzwerkleitung wandert?

Ist deine Entwicklungsumgebung wirklich 13 Jahre alt? Ich kann mich irren, aber ich meine (zumindest früher) bin ich auch mal in der Indy-Bibliothek über ein Verhalten gestolpert, dass nur das reine Abfragen (also Lesen der Property Connected ) einem schon eine Exception um die Ohren geworfen hat. Vielleicht habe ich das aber auch nur geträumt. Deshalb würde ich als erstes wirklich genau schauen, was da in deinem Programm abbricht.
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
471 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: Geschlossene TCP IP Verbindung wiederherstellen

  Alt 17. Mai 2024, 08:32
Guten Morgen,

hab jetzt eine Lösung

ich setze den Socket mittels free auf nil, dann mach ich einen neuen sauberen Connect, es treten keine exceptions mehr auf und wenn ich raus gekickt werde bekomm ich eine saubere neue Verbindung

maschinen_daten[ID].TCPIPClient.Socket.Free; Danke fürs helfen

Gruß Matthias
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz