![]() |
Re: Dialog mit einem Server über Indy TCP
@Stevie
Zitat:
|
Re: Dialog mit einem Server über Indy TCP
Warum sollte ich ne Schleife machen, die dauernd Zeilen liest, bis nen TimeOut kommt und kein Text gelesen wurde, wenn ich das einfach im OnRead-Event abhandeln könnte? Nur'n Beispiel...
|
Re: Dialog mit einem Server über Indy TCP
nunja, also ich halte die Seite für sehr unübersichtlich,
vielleicht seh ich auch nur den wald vor lauter bäumen nicht, man weiß es nicht. die besagte demo aus der sammlung für indy9 (/BasicClientServer/Client/) funktioniert bei mir grundlegend auch, allerdings ist es z.B. nicht möglich zu google.com auf dem port 80 zu verbinden und dann mit writeln() einen GET Befehl senden. alldieweil die anweisungen nach dem try connect nicht ausgeführt werden |
Re: Dialog mit einem Server über Indy TCP
Zitat:
|
Re: Dialog mit einem Server über Indy TCP
Zitat:
|
Re: Dialog mit einem Server über Indy TCP
Hab mal kurz was zusammengefrickelt...
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, StdCtrls; type TForm1 = class(TForm) IdTCPClient: TIdTCPClient; lbCommunication: TListBox; btnConnect: TButton; btnDisconnect: TButton; edtHost: TEdit; edtPort: TEdit; Memo1: TMemo; Timer: TTimer; procedure btnConnectClick(Sender: TObject); procedure IdTCPClientConnected(Sender: TObject); procedure IdTCPClientDisconnected(Sender: TObject); procedure TimerTimer(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.btnConnectClick(Sender: TObject); begin lbCommunication.Items.Clear; with IdTCPClient do begin Host := edtHost.Text; Port := StrToint(edtPort.Text); try Connect; // add a timeout here if you wish, eg: Connect(3000) = timeout after 3 seconds. WriteLn('GET / HTTP/1.0'+#13#10); except on E : Exception do // LockControls(True); ShowMessage(E.Message); end; end; end; procedure TForm1.IdTCPClientConnected(Sender: TObject); begin btnConnect.Enabled := false; btnDisconnect.Enabled := true; Timer.Enabled := True; end; procedure TForm1.IdTCPClientDisconnected(Sender: TObject); begin btnConnect.Enabled := true; btnDisconnect.Enabled := false; Timer.Enabled := False; end; procedure TForm1.TimerTimer(Sender: TObject); var s: string; begin s := IdTCPClient.ReadLn(#$A, 5); if s <> '' then Memo1.Lines.Add(s); end; end. |
Re: Dialog mit einem Server über Indy TCP
hmm ich kann nicht nachvollziehen welchen unterschied
es machen sollte wenn man sich über tcp nun zu einem server verbindet, egal welchen dienst er auf dem entsprechenden port laufen hat, dazu ist doch die besagte IdTCPClient da, die meisten anderen indy komponenten sind doch lediglich eine abwandlung dieser, in dem sourcecode meines ersten postings hat das doch auch geklappt :wall: |
Re: Dialog mit einem Server über Indy TCP
oh danke für Eure Hilfe und den Beispielcode =)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:42 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