welches Package für TCP/http ?
-
- Beiträge: 94
- Registriert: So 5. Nov 2006, 18:40
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Berlin
welches Package für TCP/http ?
Hallo,
ich möchte einen Client (mit GUI) für eine Online-Datenbankabfrage erstellen.
Das zu verwendende Protokoll wird wohl http sein.
Anfrage und Antwort finden im XML Format statt.
Für den XML Teil kommen sicherlich DOM und TxmlRead + Write zum Einsatz.
Da ich aber bisher keinerlei Erfahrung mit Netzwerkprogrammierung habe, suche ich nun nach einem Package das mir möglichst viel Arbeit abnimmt, das stabil ist und möglichst eine gute Doku hat.
Ich habe heute schon einiges zu dem Thema gefunden (lNET, Synapse, indy, IPro?,sockets) aber je mehr ich finde, umso verwirrter werde ich
Ich habe keine Ahnung welches dieser Packages was kann und was nicht.
Und die Dokus sind leider größtenteils auch nicht sehr Einsteigerfreundlich.
Ich könnte also eine kleine Starthilfe gebrauchen. Welches Package ist wofür geeignet oder zu empfehlen ?
thx
ich möchte einen Client (mit GUI) für eine Online-Datenbankabfrage erstellen.
Das zu verwendende Protokoll wird wohl http sein.
Anfrage und Antwort finden im XML Format statt.
Für den XML Teil kommen sicherlich DOM und TxmlRead + Write zum Einsatz.
Da ich aber bisher keinerlei Erfahrung mit Netzwerkprogrammierung habe, suche ich nun nach einem Package das mir möglichst viel Arbeit abnimmt, das stabil ist und möglichst eine gute Doku hat.
Ich habe heute schon einiges zu dem Thema gefunden (lNET, Synapse, indy, IPro?,sockets) aber je mehr ich finde, umso verwirrter werde ich
Ich habe keine Ahnung welches dieser Packages was kann und was nicht.
Und die Dokus sind leider größtenteils auch nicht sehr Einsteigerfreundlich.
Ich könnte also eine kleine Starthilfe gebrauchen. Welches Package ist wofür geeignet oder zu empfehlen ?
thx
Re: welches Package für TCP/http ?
Naja, also ich empfehle immer Synapse.
Allerdings ist es eher geeignet für Programmierer als für "Klicker"
Was Synapse tut, tut es gut und plattformunabhängig.
Aber ein bisschen selber denken ist schon angesagt bei Synapse.
Dafür brauchst du es nicht installieren oder dich mit verschiedenen Versionen rumschlagen.
Ich schlage vor, dass du es einfach ausprobierst:
http://synapse.ararat.cz/
Es gibt ein paar Demos und ein Wiki.
Da du offenbar nur einen Client schreiben willst, der mit einem Webserver kommuniziert, sollte es nicht allzu schwierig sein.
Die Server-Seite machst du mit PHP?
Allerdings ist es eher geeignet für Programmierer als für "Klicker"
Was Synapse tut, tut es gut und plattformunabhängig.
Aber ein bisschen selber denken ist schon angesagt bei Synapse.
Dafür brauchst du es nicht installieren oder dich mit verschiedenen Versionen rumschlagen.
Ich schlage vor, dass du es einfach ausprobierst:
http://synapse.ararat.cz/
Es gibt ein paar Demos und ein Wiki.
Da du offenbar nur einen Client schreiben willst, der mit einem Webserver kommuniziert, sollte es nicht allzu schwierig sein.
Die Server-Seite machst du mit PHP?
-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
Hi danny61,
google mal nach Indy, da findest Du V 10.1.2 glaub ich. Das läßt sich unter lazarus installieren. Allerdings mußt Du darauf achten bei den Einstellungen für das Package noch den Verweis auf das Indy-fpc Verzeichnis anzufügen sonst klatscht er auf.
Die Indy's bieten so ziemlich alles was man sich wünschen kann. Incl. HTTP-Server und -Client, IRC, TCP und so ziemlich alle Sicherheitsprotkolle wie SSL und SASL. Damit kannst du auch nen Mail-Client oder Mail-Server aufsetzen, also nur wenig was es nicht gibt.
google mal nach Indy, da findest Du V 10.1.2 glaub ich. Das läßt sich unter lazarus installieren. Allerdings mußt Du darauf achten bei den Einstellungen für das Package noch den Verweis auf das Indy-fpc Verzeichnis anzufügen sonst klatscht er auf.
Die Indy's bieten so ziemlich alles was man sich wünschen kann. Incl. HTTP-Server und -Client, IRC, TCP und so ziemlich alle Sicherheitsprotkolle wie SSL und SASL. Damit kannst du auch nen Mail-Client oder Mail-Server aufsetzen, also nur wenig was es nicht gibt.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.
(Ringelnatz)
(Ringelnatz)
-
- Beiträge: 94
- Registriert: So 5. Nov 2006, 18:40
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Berlin
Den Server gibt es schon.
Ich habe eine kleine Literaturverwaltung geschrieben und möchte diese nun mit einer Online-Abfrage zu Übungszwecken "krönen"
Dazu will ich den Server des GBV (Gemeinsamer Bibliotheken Verbund) über die Z39.50 Schnittstelle abfragen.
Die PSI XML Interface Beschreibung habe ich schon hier aber noch keine Ahnung wie ich das ganze realisieren soll.
Aber dann wird halt wieder solange gelesen und rumprobiert bis es läuft
Ich suche halt ein Package mit dem ich die Abfrage durchführen kann (im Prinzip eine einfache GET Methode), die ich dann mit TxmlRead auswerte. Für zukünftige Projekte sollte das Package natürlich wesentlich mehr können. Ich will mich aber nur in ein Paket einarbeiten müssen.
Und schon habe ich hier zwei verschiedene Empfehlungen, wie befürchtet
Synapse und Indy erschienen mir bei meinen Recherchen bisher auch am günstigsten allerdings soll Indy noch nicht so richtig stabil sein, oder ?
Wo liegen die Unterschiede ?
Und was ist TurboPower_IPro ? hierzu habe ich eigentlich am wenigsten Infos entdecken können.
thx
Ich habe eine kleine Literaturverwaltung geschrieben und möchte diese nun mit einer Online-Abfrage zu Übungszwecken "krönen"
Dazu will ich den Server des GBV (Gemeinsamer Bibliotheken Verbund) über die Z39.50 Schnittstelle abfragen.
Die PSI XML Interface Beschreibung habe ich schon hier aber noch keine Ahnung wie ich das ganze realisieren soll.
Aber dann wird halt wieder solange gelesen und rumprobiert bis es läuft
Ich suche halt ein Package mit dem ich die Abfrage durchführen kann (im Prinzip eine einfache GET Methode), die ich dann mit TxmlRead auswerte. Für zukünftige Projekte sollte das Package natürlich wesentlich mehr können. Ich will mich aber nur in ein Paket einarbeiten müssen.
Und schon habe ich hier zwei verschiedene Empfehlungen, wie befürchtet
Synapse und Indy erschienen mir bei meinen Recherchen bisher auch am günstigsten allerdings soll Indy noch nicht so richtig stabil sein, oder ?
Wo liegen die Unterschiede ?
Und was ist TurboPower_IPro ? hierzu habe ich eigentlich am wenigsten Infos entdecken können.
thx
-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
Hi danny61,
dann bist mit den Indy's ganz gut bedient. Laß mit dem HTTP-Client nen GET los und du bekommst das fertige HTML als Stringlist zurück. Damit ist Dir wohl am schnellsten geholfen.
Ansonsten geb ich theo ja Recht, die haben so ihre Macken. Aber für so kleine Sachen sind sie nicht die schlechteste Wahl.
Man will ja auch mal was fertig kriegen und sich nicht in den Tiefen des Synapse-Quellcodes verlieren. Besonders schön lesbar ist der auch nicht gerade.
Aber das mit den Remarks ist ne alte Krankheit, die sie schreiben kennen die Tiefen ihres Codes, wer's nicht kennt sucht sich tot.
dann bist mit den Indy's ganz gut bedient. Laß mit dem HTTP-Client nen GET los und du bekommst das fertige HTML als Stringlist zurück. Damit ist Dir wohl am schnellsten geholfen.
Ansonsten geb ich theo ja Recht, die haben so ihre Macken. Aber für so kleine Sachen sind sie nicht die schlechteste Wahl.
Man will ja auch mal was fertig kriegen und sich nicht in den Tiefen des Synapse-Quellcodes verlieren. Besonders schön lesbar ist der auch nicht gerade.
Aber das mit den Remarks ist ne alte Krankheit, die sie schreiben kennen die Tiefen ihres Codes, wer's nicht kennt sucht sich tot.
Über die Z39.50 Schnittstelle weiss ich nichts, bist du sicher dass die das HTTP unterstützt?
Die Unterschiede zwischen Indy und Synapse kann ich dir hier kurz schildern (meine Ansicht):
Indy wird in der IDE installiert. Du ziehst dir dann die unsichtbaren Komponenten auf ein Formular oder so und hast dann per Click die Properties und Events zur Verfügung.
Synapse besteht nur aus Units (Klassen). Du kannst also z.B. die verwendet Units in dein Projektverzeichns kopieren und fertig. Zukünftige Upgrades stören da nicht.
Bei Synapse läufts aber eher ohne Events ab (Ausnahme Sock.OnStatus).
Während Indy umfangreicher in der Unterstützung von allem Möglichen ist, konzentriert sich Synapse aufs wesentliche.
Synapse ist kompatibler zu allen von FPC unterstützen Plattformen, und unterstützt für Freepascal OpenSSL http://synapse.ararat.cz/wiki/index.php?page=SslPlugin
Es gibt eigenlich nichts, was du mit Synapse nicht machen kannst, aber manchmal ist etwas Handarbeit gefragt, während Indy eher vorgaukelt alles zu können aber - aus meiner Erfahrung - einige Bugs aufweist.
Ausserdem gibt es nicht immer den "one-best-way", wie Indy einen Glauben macht.
Kurz gesagt: Bei Synapse denkst du zuerst und dann lernst Du was und fühlst dich sicher. Bei Indy ist alles so schön einfach, bis es dich in den Hintern tritt und du in dem aufgeblasenen Code ziemlich hilflos dastehst.
Die Unterschiede zwischen Indy und Synapse kann ich dir hier kurz schildern (meine Ansicht):
Indy wird in der IDE installiert. Du ziehst dir dann die unsichtbaren Komponenten auf ein Formular oder so und hast dann per Click die Properties und Events zur Verfügung.
Synapse besteht nur aus Units (Klassen). Du kannst also z.B. die verwendet Units in dein Projektverzeichns kopieren und fertig. Zukünftige Upgrades stören da nicht.
Bei Synapse läufts aber eher ohne Events ab (Ausnahme Sock.OnStatus).
Während Indy umfangreicher in der Unterstützung von allem Möglichen ist, konzentriert sich Synapse aufs wesentliche.
Synapse ist kompatibler zu allen von FPC unterstützen Plattformen, und unterstützt für Freepascal OpenSSL http://synapse.ararat.cz/wiki/index.php?page=SslPlugin
Es gibt eigenlich nichts, was du mit Synapse nicht machen kannst, aber manchmal ist etwas Handarbeit gefragt, während Indy eher vorgaukelt alles zu können aber - aus meiner Erfahrung - einige Bugs aufweist.
Ausserdem gibt es nicht immer den "one-best-way", wie Indy einen Glauben macht.
Kurz gesagt: Bei Synapse denkst du zuerst und dann lernst Du was und fühlst dich sicher. Bei Indy ist alles so schön einfach, bis es dich in den Hintern tritt und du in dem aufgeblasenen Code ziemlich hilflos dastehst.
P.S.: Für einfache Sachen kannst du mit Synapse die "convenience Funktionen" verwenden z.B.:
function HttpGetText(const URL: string; const Response: TStrings): Boolean;
function HttpGetBinary(const URL: string; const Response: TStream): Boolean;
function HttpPostBinary(const URL: string; const Data: TStream): Boolean;
function HttpPostURL(const URL, URLData: string; const Data: TStream): Boolean;
function HttpPostFile(const URL, FieldName, FileName: string;
const Data: TStream; const ResultData: TStrings): Boolean;
Alle in unit httpsend.
Ein Beispiel wie man z.B. Formulardaten UND ein File gleichzeitig zu Server sendet findest du hier:
http://synapse.ararat.cz/wiki/index.php?page=HtmlForms
Mehr brauchst Du für den Anfang nicht.
function HttpGetText(const URL: string; const Response: TStrings): Boolean;
function HttpGetBinary(const URL: string; const Response: TStream): Boolean;
function HttpPostBinary(const URL: string; const Data: TStream): Boolean;
function HttpPostURL(const URL, URLData: string; const Data: TStream): Boolean;
function HttpPostFile(const URL, FieldName, FileName: string;
const Data: TStream; const ResultData: TStrings): Boolean;
Alle in unit httpsend.
Ein Beispiel wie man z.B. Formulardaten UND ein File gleichzeitig zu Server sendet findest du hier:
http://synapse.ararat.cz/wiki/index.php?page=HtmlForms
Mehr brauchst Du für den Anfang nicht.
-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
Prima theo,
aber warum heißt das ding dann httpsend? Kein halbwegs normaler Mensch hätte das Ding für receive im Verdacht.
Aber sei's drum, ich stell hier mal ne tiefgründige Betrachtung über OOP und Client-Server rein. Da wird seit 20 Jahren was völlig falsch verstanden. Anders kann man sich kaum erklären, das die meisten Programmierer noch heute glauben, die OOP sei vornehmlich für die Oberflächenentwicklung zu gebrauchen.
Das ist sie definitiv nicht. Die leistet weitaus mehr, letztlich läßt sich alles als Objekt definieren, auch ein Dateisystem.
Und einem widerspricht Synapse nun wirklich deutlich, nähmlich dem Grungedanken der productivity, genau dafür sind aber RAD-Tools wie lazarus und Delphi gedacht.
aber warum heißt das ding dann httpsend? Kein halbwegs normaler Mensch hätte das Ding für receive im Verdacht.
Aber sei's drum, ich stell hier mal ne tiefgründige Betrachtung über OOP und Client-Server rein. Da wird seit 20 Jahren was völlig falsch verstanden. Anders kann man sich kaum erklären, das die meisten Programmierer noch heute glauben, die OOP sei vornehmlich für die Oberflächenentwicklung zu gebrauchen.
Das ist sie definitiv nicht. Die leistet weitaus mehr, letztlich läßt sich alles als Objekt definieren, auch ein Dateisystem.
Und einem widerspricht Synapse nun wirklich deutlich, nähmlich dem Grungedanken der productivity, genau dafür sind aber RAD-Tools wie lazarus und Delphi gedacht.
schnullerbacke hat geschrieben:Prima theo,
aber warum heißt das ding dann httpsend? Kein halbwegs normaler Mensch hätte das Ding für receive im Verdacht.
Das stimmt, der Name ist bescheuert. Aber was wäre http send ohne receive?
Das ist vom Protokoll her schon gar nicht plausibel und so würde wohl jeder
halbwegs normaler Mensch annehmen, dass es einfach für HTTP ist.
schnullerbacke hat geschrieben:Aber sei's drum, ich stell hier mal ne tiefgründige Betrachtung über OOP und Client-Server rein. Da wird seit 20 Jahren was völlig falsch verstanden. Anders kann man sich kaum erklären, das die meisten Programmierer noch heute glauben, die OOP sei vornehmlich für die Oberflächenentwicklung zu gebrauchen.
Das ist sie definitiv nicht. Die leistet weitaus mehr, letztlich läßt sich alles als Objekt definieren, auch ein Dateisystem.
Ding für receive im Verdacht.
Ja, aber was hat das mit Synapse zu tun? Das sind genauso Klassen (OOP) wie Indy.
Nur die "convenience Funktionen" sind nach aussen hin Funktionen.
Du kannst gerne (und sollst) deine eigene Version von THTTPSend ableiten.
z.B. HttpGetText sieht intern so aus:
Code: Alles auswählen
function HttpGetText(const URL: string; const Response: TStrings): Boolean;
var
HTTP: THTTPSend;
begin
HTTP := THTTPSend.Create;
try
Result := HTTP.HTTPMethod('GET', URL);
if Result then
Response.LoadFromStream(HTTP.Document);
finally
HTTP.Free;
end;
end;
schnullerbacke hat geschrieben:Und einem widerspricht Synapse nun wirklich deutlich, nähmlich dem Grungedanken der productivity, genau dafür sind aber RAD-Tools wie lazarus und Delphi gedacht.
Naja, ob Synapse nun als Komponenten in die IDE gehört ist eine andere Frage.
Ich persönlich halte nicht viel von nicht-visuellen Komponenten.
Das hat auch Nachteile, z.B. verschiedene Versionen oder bei der Weitergabe. Ich hasse es wenn ich tausend Komponenten installieren muss, um einen Code zu testen.
-
- Beiträge: 94
- Registriert: So 5. Nov 2006, 18:40
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Berlin
Na, das scheint ja eine richtig philosophische Diskussion zu werden
Ich habe mich in der Zwischenzeit mal ein wenig mit den Dokus beschäftigt und bin von beiden Paketen erst einmal ziemlich Erschlagen.
Allerdings scheint mir die Synapse Doku doch um einiges übersichtlicher zu sein (auf den ersten Blick).
Gibt es für beide Pakete auch irgendwo brauchbare Dokus oder Tutorials auf Deutsch ?
Für eine komplette Einarbeitung in ein neues Thema wäre das doch hilfreich.
Das Argument, das für Netzwerkbibliotheken (die ja eh non-visual sind) keine Komponenten in Lazarus notwendig sind, kann ich übrigens ganz gut nachvollziehen. Aber das hängt sicherlich vom Funktionsumfang und der Architektur ab, die ich (noch) nicht kenne.
Wirklich weiter bin ich also immer noch nicht ;-?
Ich habe mich in der Zwischenzeit mal ein wenig mit den Dokus beschäftigt und bin von beiden Paketen erst einmal ziemlich Erschlagen.
Allerdings scheint mir die Synapse Doku doch um einiges übersichtlicher zu sein (auf den ersten Blick).
Gibt es für beide Pakete auch irgendwo brauchbare Dokus oder Tutorials auf Deutsch ?
Für eine komplette Einarbeitung in ein neues Thema wäre das doch hilfreich.
Das Argument, das für Netzwerkbibliotheken (die ja eh non-visual sind) keine Komponenten in Lazarus notwendig sind, kann ich übrigens ganz gut nachvollziehen. Aber das hängt sicherlich vom Funktionsumfang und der Architektur ab, die ich (noch) nicht kenne.
Wirklich weiter bin ich also immer noch nicht ;-?
danny61 hat geschrieben:Wirklich weiter bin ich also immer noch nicht ;-?
Lieber danny61, fang doch einfach mal an!
Hol dir die Synapse Units oder Indy und probier's aus.
Um ein paar Daten via HTTP mit Synapse oder Indy hin und her zu senden brauchst Du nicht zu promovieren.
Bzw. das Hauptproblem ist wahrscheinlich in der Z39.50 Schnittstelle, nicht in Synapse oder Indy.
Wenn du dann mehr Fragen hast kannst du gerne wieder hierher kommen
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
@schnullerbacke wenn du dich mit http ein wenig beschäftigst wird dir sehr schnell klar warum das httpsend heisst.
Das hat nichts mit bescheuert zu tun, http kann nämlich nur senden und bekommt immer daten zurück ob das nun ein OK eines posts ist oder die html seite aus einem get ist völlig egal. Und genauso flexibel ist httpsend hier ! Egal ob du Postes oder Get nimmst.
@Danny die dokumentation von synapse ist völlig ausreichend alle klassen sind gut dokumentiert es sind beispiele dabei was will man mehr.
Das hat nichts mit bescheuert zu tun, http kann nämlich nur senden und bekommt immer daten zurück ob das nun ein OK eines posts ist oder die html seite aus einem get ist völlig egal. Und genauso flexibel ist httpsend hier ! Egal ob du Postes oder Get nimmst.
@Danny die dokumentation von synapse ist völlig ausreichend alle klassen sind gut dokumentiert es sind beispiele dabei was will man mehr.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 94
- Registriert: So 5. Nov 2006, 18:40
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Berlin
So, ich habe mich mal ein wenig mit Synapse beschäftigt und bin natürlich sofort über das eine oder andere Problem gestolpert
Irgendwie habe ich mit HttpGetText einfach nicht das erwartete Ergebnis vom Server erhalten.
Daraufhin habe ich das ganze mal mit HttpMethod('Get',urlStr,ResultStr) gemacht.
Da habe ich dann anhand des Resultcodes und des Headers gesehen das der Server einen Redirect macht.
Muß ich die Umleitung selbst durchführen oder kann man Synapse veranlassen das automatisch zu händeln ?
Ich habe leider auch keine Möglichkeit gefunden die Mailingliste von Synapse durchsuchen zu lassen. Und mich schon wieder bei der nächsten Mailingliste anzumelden für so ein relativ triviales Problem hatte ich auch keine Lust
Gibt es irgendwo ein richtiges Forum für Synapse ?
thx
Irgendwie habe ich mit HttpGetText einfach nicht das erwartete Ergebnis vom Server erhalten.
Daraufhin habe ich das ganze mal mit HttpMethod('Get',urlStr,ResultStr) gemacht.
Da habe ich dann anhand des Resultcodes und des Headers gesehen das der Server einen Redirect macht.
Muß ich die Umleitung selbst durchführen oder kann man Synapse veranlassen das automatisch zu händeln ?
Ich habe leider auch keine Möglichkeit gefunden die Mailingliste von Synapse durchsuchen zu lassen. Und mich schon wieder bei der nächsten Mailingliste anzumelden für so ein relativ triviales Problem hatte ich auch keine Lust
Gibt es irgendwo ein richtiges Forum für Synapse ?
thx