AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy und die Kommunikation. So richtig?
Thema durchsuchen
Ansicht
Themen-Optionen

Indy und die Kommunikation. So richtig?

Ein Thema von Jackie1983 · begonnen am 14. Jun 2010 · letzter Beitrag vom 14. Jun 2010
Antwort Antwort
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#1

Indy und die Kommunikation. So richtig?

  Alt 14. Jun 2010, 13:57
Hi,

durch einen anderen Beitrag (Daten sicher übertragen) wurde ich hingewiesen meine Anwendung bzw. dessen Kommunikation übers Internet mit Indy zu lösen, da diese schön SSL können.

Jetzt habe ich mal ein wenig geschaut.
verstehe ich das jetzt so richtig.

Das ist der Demo Server. Sobald sich ein Client anmeldet und einen Text sendet wird dieser wieder zurück gesendet.
Delphi-Quellcode:
procedure TForm1.TCPServerExecute(AThread: TIdPeerThread);
var
  msg : string;
begin
  msg := AThread.Connection.ReadLn;
  with AThread.Connection do
  begin
    WriteLn(msg+Inttostr(Random(100)));
  end;
end;
Bei den Clients erstellen ich die Komp direkt beim Starten der Anwendung und verbinde mit dem Server.

Das Senden sieht so aus.
Delphi-Quellcode:
  TCPClient.WriteLn('Hallo. ');
  ListBox1.Items.Add(TCPClient.ReadLn);
Ist das so richtig, das ich beim Server immer mit ReadLn warte bis was von irgend einem Client kommt?

So könnte ich dann auch größere Anwendungen erstellen, was noch fehlt ist ein Protokoll und eine überprüfung ob die Verbindung noch "lebt"
Gruß Thomas

Geändert von Jackie1983 (14. Jun 2010 um 15:14 Uhr) Grund: Fehler im Thementitel geändert.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Indy und die Kominikation. So richtig?

  Alt 14. Jun 2010, 14:30
Kommunikation.
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#3

AW: Indy und die Kominikation. So richtig?

  Alt 14. Jun 2010, 14:48
was fehlt denn noch?
Möchte nur wissen ob ich am Server mit ReadLn warten kann bis daten kommen.
Oder ob es eine bessere Lösung gibt...
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Indy und die Kominikation. So richtig?

  Alt 14. Jun 2010, 14:56
Im Prinzip sollte das so funktionieren, ja. Diese Arbeitsweise nennt man auch "blockierend", weil eben das Programm (bzw der Thread) immer so lange wartet, bis Daten eintreffen. Es gibt auch andere Ansätze, die z.B. Polling verwenden, was bei manchen High-Performance-Geschichten angeblich Vorteile bringen soll (habe ich mal gehört, auch wenn ich es mir kaum vorstellen kann, aber ich bin auch kein Experte), aber in der Regel tut es der blockierende, sprich dein, Ansatz.

Bitte korrigiere den Thread-Titel.
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#5

AW: Indy und die Kominikation. So richtig?

  Alt 14. Jun 2010, 15:13
Lol ok, jetzt weis ich was du meinst
Dachte ich hätte nicht genau das Problem beschrieben

Naja, werde ich machen
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#6

AW: Indy und die Kommunikation. So richtig?

  Alt 14. Jun 2010, 16:17
ok dann habe ich noch eine Frage. Wenn der Thread bei Readln wartet und ich den Server beende, wird die Anwendung nicht beendet, wie kann ich jetzt das ReadLn abbrechen so das die Anwendung geschlossen wird...

[Edit]
Der Client Server soll senden und empfangen. Wie löse ich das. Weil wenn ich bei ReadLn bin und möchte text versenden muss ich ja erst warten bis ReadLn fertig ist.

Dachte mir für den Client einen ReadThread zu erstellen, wenn eine Nachricht kommt wird diese an den Hauptthread weiter gegeben zum verarbeiten.

Das gleiche beim Server. Dort gibt es dann auch ein Read Thread. Damit der Server auch senden kann wenn er wo anders auf Daten wartet.

Oder gibt es da ne besser Lösung?

Geändert von Jackie1983 (14. Jun 2010 um 18:26 Uhr)
  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 04:09 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