AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TIdTCPServer / TIdTCPClient => Ping - Pong
Thema durchsuchen
Ansicht
Themen-Optionen

TIdTCPServer / TIdTCPClient => Ping - Pong

Ein Thema von Jackie1983 · begonnen am 21. Jun 2010 · letzter Beitrag vom 22. Jun 2010
 
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: TIdTCPServer / TIdTCPClient => Ping - Pong

  Alt 21. Jun 2010, 14:08
HI Jackie,

1.
Zitat:
Die CS ist damit wenn der Server gerade list nicht wo anders am Server OnWrite aufgerufen wird. Oder ist das CS zu viel, habe das gleich auch am Client.
Habe die Funktion nur OnRead genannt. msg ist local.
Die CS solltest Du auf jeden Fall rausschmeissen, im Client kann das sinnvoll und notwendig sein. Im Server allerdings läuft jedes OnExecute(bei Dir OnRead) innerhalb eines eigenen Threads und wenn sdie Variable "msg" sowieso lokal ist, gibt es keinerlei GRund diese mit einer CS zu schützen ,auf jeden Fall sehe ich keinen auf Basis der Codeschnipsel.

2.
Zitat:
Ein leerstring sollte eigentlich nicht kommen. Und wenn doch kann ich eh nichts damit anfangen. Also bei einem fehler, meist Timeout, soll nicht weiter gemacht werden, falsch?
Recht hast Du, ich war mit meiner etwas zu voreilig, das liegt allerdings dran das ich das ganze immer ohne Exception löse.
In Indy10 würde das dann so aussehen :
Delphi-Quellcode:
  // Bis max. 2,5 Sekunden warten das Daten erfolgreich in den Buffer geschrieben wurden
  AContext.Connection.IOHandler.CheckForDataOnSource(2500);
  // Prüfen, ob die Client Verbindung noch besteht, eventuell hat der Server beim CheckForDataOnSource festgestellt das die Verbindung weg ist
  if not AContext.Connection.Connected then exit;
  // Sind keine Daten im Buffer, dann raus
  if AContext.Connection.IOHandler.InputBufferIsEmpty then exit;
  // hier jetzt weiter mit ReadLN ... sind jetzt auf jeden Fall Daten zum Lesen da !
  // ...
In Indy9 sollte der Code auch funktionieren Du must nur AConntext durch AThread ersetzen und das IOHandler in der Mitte weg lassen.

3. Ok, dann ist ja alles gut

4. Zur Umstellung von Indy9 auf Indy10 existieren hier einige Threads, das ganze ist je nach Delphi Version mit ein bisschen "Handarbeit" verbunden. Deshalb hängt es von der größere des Projekts und DEiner aktuellen Entwicklungsumgebung ab ob es jetzt wirklich ratsam ist auf Indy10 umzustellen,
oder ob für Deine Belange Indy9 absolut ausreichend ist. Eine großere Änderung von Indy9 zu Indy10 ist, das nicht mehr jede Connection Ihren eigenen Thread hat,
sondern das es einen "Thread-Pool" gibt, der freie Threads an die verschiedenen Clients verteilt.

Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
 


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 16:01 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