Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Geschlossene TCP IP Verbindung wiederherstellen (https://www.delphipraxis.net/215144-geschlossene-tcp-ip-verbindung-wiederherstellen.html)

matashen 16. Mai 2024 13:10

Geschlossene TCP IP Verbindung wiederherstellen
 
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());
...

Der schöne Günther 16. Mai 2024 13:51

AW: Geschlossene TCP IP Verbindung wiederherstellen
 
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.

matashen 16. Mai 2024 14:01

AW: Geschlossene TCP IP Verbindung wiederherstellen
 
ich klopf grad erst nach 30 sekunden klappt nicht :-(

Der schöne Günther 16. Mai 2024 14:22

AW: Geschlossene TCP IP Verbindung wiederherstellen
 
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
Delphi-Quellcode:
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.

matashen 17. Mai 2024 07:32

AW: Geschlossene TCP IP Verbindung wiederherstellen
 
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

Delphi-Quellcode:
maschinen_daten[ID].TCPIPClient.Socket.Free;
Danke fürs helfen

Gruß Matthias


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz