HiHi!
Ich suche verzweifelt nach einem Beispiel, wie ich den Timeout des TCPClients verkürzen kann. Ich hab schon des öfteren gelesen, dass man dazu den System-Timer verwenden kann, wirklich verstanden hab ich das nicht.
Der Timer kann mir zwar sagen, dass eine bestimmte Zeit vergangen ist, was mir aber nicht hilft, den Connect auch sauber zu beenden.
Ich hab folgendes Beispielprogramm gebastelt, vielleicht kann mir das jemand so erweitern, dass der Connect nen Timeout von vielleicht 100ms bekommt...
Bin aber auch über jeden anderen Tip sehr froh, der mir hilft da weiter zu kommen.
VG,
Wichtelmann
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44:
| unit IdConnectionChecker;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdException;
type TConnectionChecker = class(TForm) LogWindow: TListBox; TCPClient: TIdTCPClient; TCPTimer: TTimer; CheckConnection: TButton; ClientAddress: TEdit; ClientPort: TEdit; ClientAddressLabel: TLabel; ClientPortLabel: TLabel; procedure CheckConnectionClick(Sender: TObject); end;
var ConnectionChecker: TConnectionChecker;
implementation
{$R *.dfm}
procedure TConnectionChecker.CheckConnectionClick(Sender: TObject); begin TCPClient.Host := ClientAddress.Text; TCPClient.Port := StrToInt(ClientPort.Text); try TCPClient.Connect; TCPClient.Disconnect; LogWindow.Items.Add(concat(ClientAddress.Text,': Connection check successful...')); except on E: EIdSocketError do LogWindow.Items.Add(concat(ClientAddress.Text,': ',E.ClassName,' - ',StringReplace(E.Message,#13#10,'<EOL>',[rfReplaceAll]))); end; end;
end. |