AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi [Indy 10] Indy - Zusammenfassende Fragen
Thema durchsuchen
Ansicht
Themen-Optionen

[Indy 10] Indy - Zusammenfassende Fragen

Ein Thema von Dragon27 · begonnen am 20. Dez 2006 · letzter Beitrag vom 23. Dez 2006
Antwort Antwort
Seite 1 von 2  1 2      
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#1

[Indy 10] Indy - Zusammenfassende Fragen

  Alt 20. Dez 2006, 20:19
Hallo,

ich möchte Euch hier um ein die Richtigstellung einiger Aussagen bitten.

1. Indy 10 ist nicht Eventgesteuert und man muss mit einem Timer den Server abfragen (steht so in einem Anderen Thread)
-verstehe ich nicht... die Indys haben doch Ereignisse.... also auch Execute oder?
-wie kann ich einen Client einzeln und gezielt ansprechen?

2. Bindings

-Wenn ich den Server online stelle muss ich diesem ein neues Binding zuweisen/machen:

Delphi-Quellcode:
var ABinding: TIdSocketHandle;
//...
server.Bindings.Clear;
ABinding := Server.Bindings.Add;
ABinding.IP := Binding;
ABinding.Port := strtoint(port);
Server.Active := True;
//..
-Warum kann ich mehrere Bindings machen? Wie sind diese Dinger zu verstehen? Bei den Sockets reicht doch auch nur ein Binding?
-Ich habe hier im Forum auch gelesen, dass die Clients über die Bindings angesprochen werden ... Bahnhof

3. Unterschied zu den Sockets

-Bei den Sockets muss ich VOR der Verarbeitung immer überprüfen ob alle Pakete/bestandteile des Befehles da sind.... Wie
ist das bei den Indys?
-Gibt es bei den Indys auch sowas wie ein Handle auf die einzelnen Clients über die man dann gezielt ansprechen kann?

Tut mir leid wenn das sehr sehr viele Fragen auf einmal sind aber ich denke sie gehören einfach alle zusammen. Da ich die 10er Indys habe finde ich auch nur sehr sehr wenig Material.

Danke für Eure Mühe und Hilfe!!!!

Gruß

Dragon27
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: [Indy 10] Indy - Zusammenfassende Fragen

  Alt 20. Dez 2006, 20:43
Hi.
Zu 1:
Der Indy-Client ist nicht Event-gesteuert. Soll heißen: er merkt nicht wenn der Server etwas schickt.
Zu 3:
Dafür gibt es bei den Indys die Funktionen "WriteLn" und "ReadLn", dass heisst, es wird solange gelesen bis #13#10 kommt und an den String wird am Ende bei WriteLn noch ein #13#10 drangehängt
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#3

Re: [Indy 10] Indy - Zusammenfassende Fragen

  Alt 20. Dez 2006, 20:47
Hallo,

danke für deine Antwort! Ehm was ich dann noch nich verstehe... Wie frage ich dann ab ob etwas geschickt wurde?

Also liege ich da richtig, dass ich einen Timer machen muss der immer und immer wieder ReadLn macht?
Können da nicht Daten verloren gehen?

Und wie kann ich dann einzelne Clients über den Server ansprechen ... ohne handle?

Danke!
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: [Indy 10] Indy - Zusammenfassende Fragen

  Alt 20. Dez 2006, 20:56
Nein, da können kine Daten verloren gehen, weil es dafür einen Buffer gibt.
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#5

Re: [Indy 10] Indy - Zusammenfassende Fragen

  Alt 20. Dez 2006, 21:53
Danke dir für deine Hilfe!

Ich versuch jetzt schon ewig einen Chat hinzubekommen und es geht nie etwas! Entweder denke ich zu komplex oder ich weiß es auch nicht. Indy 10 Tutorials findet man nirgens und fertigen Programmcode mag ich ehrlich gesagt nicht....

Also ich habe jetzt verstanden, dass ich mit dem Client immer wieder beim Server nachfragen muss ob was da ist.... aber wie sende ich jetzt an den Client etwas bzw. wie gebe ich Daten in den Serverpuffer....

Habe nirgens ein WiriteLN beim Server gefunden und wie kann ich die Clients unterscheiden? Währe echt nett wenn mir das noch jemand sagen könnte. Und das mit den Bindings ist auch noch so ein Rätsel...

Herzlichen Dank!
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: [Indy 10] Indy - Zusammenfassende Fragen

  Alt 20. Dez 2006, 22:01
Mach es doch in etwa so:

Aktion - Reaktion
Client loggt sich ein - Server fügt der Userliste den Client zu und sendet true oder false zurück, ob es geklappt hat (Fault wegen doppeltem Benutzername zB)
Client sendet Nachricht - Server fügt jedem Client (Klasse TClient mit Stringlist zB) Die Message hinzu für den sie bestimmt ist
Client (periodisch) fragt nach neuen Daten - Server setzt regelmäßig inkrementierte Ping-Variable zurück(Ach den User gibt es doch noch ) und sendet dem Client alle Messages sowie die Userliste und leert die Client-Stringlist. Der client hängt die Messages an.

Das wars auch schon. Wenn du fragen hast, frag.
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#7

Re: [Indy 10] Indy - Zusammenfassende Fragen

  Alt 21. Dez 2006, 11:32
So Hallo nochmal,

also habe jetzt schon einiges herausbekommen und habe versucht beim Server etwas abzufragen. Das funktioniert auch... jedoch hängt bei dem folgenden Quelltext NACH dem empfanden des Textes das Programm:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, ExtCtrls,
  StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Timer1: TTimer;
    client: TIdTCPClient;
    ListBox1: TListBox;
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Listbox1.items.add(client.Socket.ReadLn);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
client.Connect;
sleep(1500);
application.ProcessMessages;


end;

procedure TForm1.Button2Click(Sender: TObject);
begin
client.Socket.WriteLn('s');
application.ProcessMessages;
timer1.Enabled:=true;
application.ProcessMessages;
end;

end.
Was mache ich falsch?

Danke für die gute Hilfe!
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
jokerfacehro
(Gast)

n/a Beiträge
 
#8

Re: [Indy 10] Indy - Zusammenfassende Fragen

  Alt 21. Dez 2006, 11:40
Hallo !

es ist eher so gemeint:
in einem bestimmten interval sendet erstmal der client dem server dass, er noch da ist.
der client wartet dann auf daten.
in der zeit sendet der server dem client daten z.B. neuen text, die userliste und so weiter



Frohe Weihnachten und viel Standfestigkeit für Silvester
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: [Indy 10] Indy - Zusammenfassende Fragen

  Alt 21. Dez 2006, 14:37
Klar dass es hängt: Wenn der Server sich "Tot-stellt" und dem Client nichts zurücksendet, wartet dieser bis in alle Ewigkeit
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#10

Re: [Indy 10] Indy - Zusammenfassende Fragen

  Alt 21. Dez 2006, 15:33
Hallo,

mhm danke ertsmal für Eure super Hilfe! Bin schon wesentlich weiter *freu*

Ich hab aber grad echt keine Ahnung wie ich das Problem codemäßig angehen soll

Sagen wir mal ich will einfach Kommandos schicken.... und diese auswerten. Nun habe
ich aber beim Server 10 Kommandos zum abschicken bereitgestellt aber ich rufe ja bei
dem Timer nur immer 1 mal das Readln auf

Das nächste ist dann nich einen speziellen Client anzusprechen

Wenn das alles funct bin ich echt glücklich!!

Danke Euch nochmal!!
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:59 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