AGB  ·  Datenschutz  ·  Impressum  







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

TTCPClient LocalHost

Ein Thema von Question_mark · begonnen am 7. Dez 2010 · letzter Beitrag vom 28. Jul 2013
Antwort Antwort
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#1

AW: TTCPClient LocalHost

  Alt 7. Dez 2010, 21:47
Also erzeuge ich in meiner Kompo dynamisch einen TTCPClientt aus dem Tab "Internet"...
Wieso dynamisch erzeugen? Ich halte das für eine Designschwäche.
Schreib' deine Komponente doch so, dass sie eine TTCPClient-Komponente übergeben bekommt.
Delphi-Quellcode:
TBlackboxProtokoll = class(TComponent)
...
published
  property TcpClient:TTCPClient read FTcpClient write SetTcpClient;
end;
Du kannst dir an den Komponenten TQuery, TDataSource und TDBGrid ein Beispiel nehmen.
Die Abhängigkeiten sehen so aus:
Code:
TDBGrid -> TDataSource -> TQuery
Mit dem Pfeil (->) wird eine Abhängigkeit dargestellt.
TDBGrid BENÖTIGT ein TDataSource, usw.
Bei deiner Komponente ist es das Gleiche:
TBlackboxProtokoll benötigt eine TTcpClient-Komponente für seine Arbeit.
  Mit Zitat antworten Zitat
Question_mark

Registriert seit: 20. Okt 2004
54 Beiträge
 
Delphi 2009 Professional
 
#2

AW: TTCPClient LocalHost

  Alt 7. Dez 2010, 23:00
Hallo,

Zitat von sx2008:
Schreib' deine Komponente doch so, dass sie eine TTCPClient-Komponente übergeben bekommt.
Ich habe den TCPClient im On Create meiner Komponente so erzeugt :

FTCPClient := TTCPClient.Create(Self);

Und zwar weil ich nicht alle Properties des TCPClients in meiner Komponente dem Anwender öffentlich machen will. Wenn ich den TCPClient in der von Dir vorgeschlagenen Weise implementiere, habe ich automatisch auch alle public properties in meiner Komponente mit veröffentlicht (sag ich jetzt mal aus dem Bauch heraus). Und wahrscheinlich auch alle Events. Und genau diese Events muss ich speziell behandeln, eben um diese BlackBox (Ok, es ist eine SPS) spezifische Protokoll wieder aus den TCP Nutzdaten zu extrahieren. Damit der Anwender im Endeffekt nur die Nutzdaten bekommt und sich nicht mit dem Protokoll auseinander setzen muss. Wie schon oben geschrieben, funktioniert das auch alles soweit. Eigentlich hat mir nur dieses Indy10 Monster missfallen, darum habe ich die aus dem Projekt rausgekegelt. Die Macher von Indy haben da beim Umstieg von Indy9 auf Indy10 Ihre Philosphie völlig geändert und sich da irgendwie verrannt. Bei Indy9 bekam ich bei einem Fehler einen Event gefeuert, den konnte ich nach meinem Belieben behandeln. Indy10 knallt selbst bei normalen Vorgängen Exceptions heraus, die nicht ohne Aufwand abzufangen sind (und nicht nur im Debugmodus). Bei Indy9 konnte ich im Event "OnError" selber entscheiden, wie ich darauf reagiere. Der Anwender meiner Komponente soll auf keinen Fall zur Laufzeit eine Fehlermeldung sehen. Wenn eine solche Meldung auftritt, möchte ich eben selber entscheiden, wie diese zu behandeln ist.
Im Moment überlege ich noch, ob ich beim D2009 TTCPClient bleibe oder wieder auf Indy9 zurück gehe.
Also Indy10 bleibt nach meinen bisherigen Erfahrungen aus dem Spiel, wenn ich solche Konstrukte hier sehe : TIdTCPClient.IdIOHandler.IdInterceptor.IdSocket.Id ..... krieg ich das Kotzen. Und die Hilfe zu Indy ist noch schlechter als die von Delphi, und die muss man erstmal unterbieten.

Ok, das Beispiel war jetzt etwas übertrieben, aber nur etwas ....

Aber danke für Deinen Hinweis, ich werde das auf jeden Fall morgen mal ausprobieren.

Gruß

Question_mark
  Mit Zitat antworten Zitat
Question_mark

Registriert seit: 20. Okt 2004
54 Beiträge
 
Delphi 2009 Professional
 
#3

AW: TTCPClient LocalHost

  Alt 8. Dez 2010, 22:34
Hallo,

Zitat von Question_mark:
Im Moment überlege ich noch, ob ich beim D2009 TTCPClient bleibe oder wieder auf Indy9 zurück gehe.
Hüstel, Räusper ..
Das war wohl nichts, denn Indy9 ist wohl für Delphi >= 2009 wegen Unicode nicht das geeignete Werkzeug. Das man bei der Installation von D2009 zwischen Indy9 und Indy10 wählen konnte, war wohl ein kleiner Betriebsunfall bei Embarcadingsbums.
Was habe ich bisher erkannt :
1) Indy9 nicht für D2009 geeignet wegen Unicode (unter D2006 war Indy9 eine gute Wahl).
2) Indy10 für mein Vorhaben nicht geeignet, alles oversized, bulky und junk.
3) TTCPClient aus D2009 verbindet sich über den NIC, den er möchte.

Dann habe ich heute mal die ICS (Version 7.54) von Francois Piette installiert und einen ganzen Tag die darin enthaltene Komponente WSocket getestet. Leider reagiert WSocket nicht auf vom Server gesendete "Keep Alive" Telegramme. Die werden vom ICS WSocket ignoriert. Die Folge ist natürlich, das der Server nach 10 Versuchen mit einem lockeren "RST" die Verbindung mit der Axt kappt...
Ich kann zwar in WSocket eigene "Keep Alive" erzeugen, die werden vom Server auch korrekt beantwortet. Allerdings besteht der Server natürlich zu Recht auf ein "ACK" bei einem vom Server gefeuerten "Keep Alive". Hier verhält sich WSocket nicht konform zu den RFCs. Vielleicht habe ich aber auch nur einige Properties übersehen, um das richtige Verhalten zu erzielen. Wenn ja, dann bitte ich Euch um entsprechende Infos. Google habe ich zu dem Thema ausreichend bemüht und auch die Homepage von Overbyte bietet da keine wertvolle Hilfe.

Ansonsten bleibt da nur noch Synapse, habe ich dann als nächstes auf der "To do" Liste.

Gruß

Question_mark
  Mit Zitat antworten Zitat
Nintendo

Registriert seit: 16. Feb 2009
82 Beiträge
 
#4

AW: TTCPClient LocalHost

  Alt 27. Jul 2013, 21:16
Hallo,

ich stehe auch gerade vor einem ähnlichen Problem. Ich habe als Pfad für den localhost C:\Program Files\httpd\ mit den beiden Unterordnern htdocs und isapi.

in htdocs liegt meine Datei index.html.

Diese aber wird nicht gefunden, egal, ob ich im TCPServer als Localhost die Konstante localhost oder meinen konkrten Pfad verwende.

Was muss ich noch tun, damit der Pfad gefunden wird?

Ich vwerwende vorerst noch nicht Indy, erst mal da reinarbeiten. Derzeit verwende ich TTCPserver von der Palettenseite "Internet"

Im Browser ( Internet Explorer 8 ) erhalte ich die Meldung, das Intranet aktuell deaktiviert ist. Wie aber schalte ich das ein, falls das die Ursache ist, das meine Index.html nicht gefunden wird.

Localhost muss schließlich erst mal klar sein. Ist vielleicht eher die Schreibweise des Pfades anders als gewöhnlich bei Dateien auf dem lokalen Rechner?

Wer kann helfen?

Ich habe vor Fragestellung unter localhost gesucht und dabei diesen Thread gefunden, deshalb frage ich auch hier.

Habe die You Tube Anleitung mit dem Titel "Creating simplest Web Server using Delphi" angeschaut und meine Delphi Anwendung danach aufgebaut.

Geändert von Nintendo (27. Jul 2013 um 21:19 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#5

AW: TTCPClient LocalHost

  Alt 28. Jul 2013, 11:37
Ich würde dir raten ein eigenes Thema zu erstellen, da dein Problem scheinbar ein völlig anderes ist.

Mir ist nicht ganz klar was du da vor hast. Du wirfst einige Begriffe ziemlich durcheinander. Du hast einen TCP-Server, scheinbar auch einen HTTP-Server (httpd?) und den IE als Client?

Was heißt das "als Localhost die Konstante localhost oder den Pfad"? Localhost ist immer eine Konstante für die IP 127.0.0.1. Ein Pfad ist sowas wie C:\Programme oder /home/valentin unter Unix. Und was du meinst, vermute ich mal, ist eine URL: http://localhost/pfadanteil

Mein Tipp: eröffne einen eigenen Thread!

Liebe Grüße,
Valentin
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:08 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