Hallo,
Wo finde ich ein Einsteigerfreundliches Tutorial zu den Indys. Die Originaldokus sind zu viel auf einmal. Ich glaube, in der
DP was von
Indy-Eisteigertutorial gesehen zu haben, finde das aber nicht mehr wieder. Kann bitte mal jemand da hin verlinken?
ich beschäftigen mich gerade mit den Kommunikationsmöglichkeiten zwischen verschiedenen Anwendungen.
So experimentiere ich gerade mit den Indys und habe da folgenden Code:
Delphi-Quellcode:
type
TTCPClient = class(TForm)
procedure btnTCPIPConnectClick(Sender: TObject);
procedure btnSendClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
procedure Connect;
public
end;
implementation
procedure TTCPClient.FormCreate(Sender: TObject);
begin
FClient := TIdTCPClient.Create(self);
FClient.BoundIP := '127.0.0.1';
FClient.BoundPort := 2230;
FClient.Port := 2230;
FClient.Host := '127.0.0.1';
end;
procedure TTCPClient.Connect;
begin
FClient.Connect;
end;
procedure TTCPClient.btnTCPIPConnectClick(Sender: TObject);
begin
Connect;
end;
procedure TTCPClient.btnSendClick(Sender: TObject);
begin
FClient.IOHandler.WriteLn('Ein Server Kommando');
end;
procedure TTCPClient.FormDestroy(Sender: TObject);
begin
FClient.DisconnectNotifyPeer;
FClient.Free;
end;
Mein Problem ist jetzt, das ich beim Verbinden einen ESocketError erhalte. Meldung "Connection timed out".
Wenn ich irgendwo eine Mindestzeit vorgeben muss, wieviel Zeit ist da optimal?
Ich habe keinen Timeout vorgegeben. Kann es sein, das der Client somit den angebenen Port sucht, aber zu viele Millisekunden dazu braucht. Mehr als die evtl. Defaulteinstellung? Oder ist gar kein Defaultwert vorgegeben?
An dieser Stelle habe ich den folgenden Quelltext gefunden:
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
IdTCPClient1.Host:='127.0.0.1';
IdTCPClient1.Port:=47110;
IdTCPClient1.Connect;
end;
procedure TForm1.Button1Click(Sender: TObject);
var s : string;
begin
IdTCPClient1.IOHandler.WriteLn(Edit1.Text);
s:=IdTCPClient1.IOHandler.ReadLn;
Memo1.Lines.Add('Client received : '+s);
end;
den ich nicht unkritisch übernehmen will. Deshalb habe ich folgende Fragen:
Was bedeuten BoundIP und BoundPort? Im letzteren Quelltext wurden nur Host und Port eingestellt. Ist das generell so zu machen, wenn ich eine Verbindung zum Server bauen will. Bei der
IP könnte ich noch verstehen, zwei vesrschiedene Werte einzugeben:
-Host -> eigener likaler Rechner
-BoundIP ->
IP des entfernten Rechners
Ist das auch so?
Aber warum dann auch BoundPOrt. Geht eine Verbindung nicht für schreiben und lesen über ein und denselben Port?
Und es gibt ja auch den IdTCPServer, den ich jetzt noch gar nicht beachtet habe, weil ich einstweilen hiermit experimentiere. Dort müsste ja ein von mir gesendetes Break Kommando ankommen, was ich auf dem gdb Bildschirm ja sehen müsste. Da hab ich mir den Server mit der
Indy Komponente erst mal geschenkt, weil der unten sthende Server ja auf jeden Fall funktionieren dürfte, womit der Fehler eindeutig meinem Client zuzuordnen wäre.
gdbserver 127.0.0.1:2230 <lw:>\meinTestprg.exe
gdb -ex "target remote 127.0.0.1:2230"
Was muss ich also im Clint einstellen, um die Verbindung zu erhalten?
Client uns Server befinden sich auf dem lokalen Rechner