AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ClientSocket

Ein Thema von Chriscode · begonnen am 11. Okt 2012 · letzter Beitrag vom 12. Okt 2012
 
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: ClientSocket

  Alt 11. Okt 2012, 18:49
Diese Uraltkomponente hatte ich ewig nicht mehr in der Hand, die Blockingmethode mit Streams bekomme ich auf die schnelle scheinbar nicht zum laufen ... vielleicht hilft Dir folgende Kapselung für das erste ...

Delphi-Quellcode:
unit ClientSocketBlocking;
// 2012 by Thomas Wassermann
interface

uses
  Windows, Messages, SysUtils, ScktComp, Classes,Forms;

Type

  TOldClientSocketTest = Class
  Private
    FCs: TClientSocket;
    FSL: TStringList;
    FHost:String;
    FContent:String;
    FReady:Boolean;
    procedure MyDisconnect(Sender: TObject; Socket: TCustomWinSocket);
    procedure MyOnRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure MyOnWrite(Sender: TObject; Socket: TCustomWinSocket);
  protected
    Constructor Create(Const AUrl: String; Port: Integer = 80);
    Destructor Destroy ;
  public
    Class Function GetPage(Const AUrl: String; Port: Integer = 80):String;

    End;
implementation

{ TOldClientSocketTest }

destructor TOldClientSocketTest.Destroy;
begin
   FSL.Free;
   FCS.Free;
end;

class function TOldClientSocketTest.GetPage(const AUrl: String; Port: Integer=80): String;
begin
    With Create(AUrl,Port) do
      begin
         Result := FSL.Text;
         Destroy;
      end;
end;

procedure TOldClientSocketTest.MyDisconnect(Sender: TObject; Socket: TCustomWinSocket);
begin
  FReady := true;
end;

procedure TOldClientSocketTest.MyOnRead(Sender: TObject; Socket: TCustomWinSocket);
begin
  FSL.Add(TClientSocket(Sender).Socket.ReceiveText);
end;

procedure TOldClientSocketTest.MyOnWrite(Sender: TObject; Socket: TCustomWinSocket);
begin
  Socket.SendText('GET ' + FContent + ' HTTP/1.0' + #13#10#13#10);
end;

constructor TOldClientSocketTest.Create(const AUrl: String; Port: Integer);
var
 i:Integer;
begin
  FSL := TStringList.Create;
  FCs := TClientSocket.Create(nil);
  try
    if pos('http://',Lowercase(AUrl))>0 then FHost := Copy(Aurl,8,Length(Aurl))
    else FHost :=(AUrl);

    i := Pos('/',FHost);
    if i>0 then
      begin
        FContent := Copy(FHost,i,length(FHost));
        FHost := Copy(FHost,1,i-1);
      end;

    if Length(FContent)=0 then FContent := '/';
    FCs.OnDisconnect := MyDisconnect;
    FCs.OnRead := MyOnRead;
    FCs.OnWrite := MyOnWrite;
    FCs.Host := FHost;
    FCs.Port := Port;
    FCs.ClientType := ctNonBlocking;
    FCs.active := true;
    while not FReady do
      begin
      Application.Processmessages;
      Sleep(50);
      end;
  finally
  end;
end;




{
procedure TForm3.Button3Click(Sender: TObject);
Procedure AddSep;
  begin
      Memo1.Lines.Add('_______________________________________________');
  end;

begin
  Memo1.Text := Memo1.Text + TOldClientSocketTest.GetPage('www.devworx.com');
  AddSep;
  Memo1.Text := Memo1.Text + TOldClientSocketTest.GetPage('http://www.jmarshall.com/easy/http/');
  AddSep;
  Memo1.Text := Memo1.Text + TOldClientSocketTest.GetPage('http://www.delphipraxis.net');
  AddSep;

end;
}


end.
Angehängte Dateien
Dateityp: zip ClientSocketBlocking.zip (1,1 KB, 24x aufgerufen)
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
 


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 06:30 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