Datenübertragung zwischen Prozessen -> binär?
Moderator: Moderatoren
-
- Rekursionen-Architekt
- Beiträge: 194
- Registriert: Fr, 24. Feb 2006 8:09
- Kontaktdaten:
Datenübertragung zwischen Prozessen -> binär?
Ich mal wieder …
Eine allg. Frage zum Thema Datentransfer – fast schon peinlich aber ich weiß es eben nicht (oder habe es vergessen …)
Wenn ich Daten zwischen zwei Prozessen hin und her schicke wie werden diese übertragen?
Das schließt sich eigentlich an den Thread: http://www.xbaseforum.de/viewtopic.php?t=1532 an, passt aber hier besser rein.
Ich meine folgendes:
Prozess A: schicke (über eine Pipe) einen String „HALLO“ an Prozess B. Prozess B erhält dann also das „HALLO“.
Wird das „HALLO“ als solches durch die Pipe geschickt oder kodiert das System es vorher binär? Hier also statt „HALLO“ 01001000 01000001 01001100 01001100 01001111.
Ich frage mich es eben deshalb weil ich mir nicht sicher bin ob ich einfach einen String schicken soll oder vorher diesen selbst binär kodieren soll – nach dem Empfang natürlich wieder dekodieren.
Das ganze soll natürlich dann Geschwindigkeitsvorteile bringen.
Ich gehe mal davon aus, dass es keinen Unterschied ausmacht ob ich die Daten zwischen zwei Prozessen auf einem Rechner oder im Netzwerk schicke – oder?
Gruß,
ich
Eine allg. Frage zum Thema Datentransfer – fast schon peinlich aber ich weiß es eben nicht (oder habe es vergessen …)
Wenn ich Daten zwischen zwei Prozessen hin und her schicke wie werden diese übertragen?
Das schließt sich eigentlich an den Thread: http://www.xbaseforum.de/viewtopic.php?t=1532 an, passt aber hier besser rein.
Ich meine folgendes:
Prozess A: schicke (über eine Pipe) einen String „HALLO“ an Prozess B. Prozess B erhält dann also das „HALLO“.
Wird das „HALLO“ als solches durch die Pipe geschickt oder kodiert das System es vorher binär? Hier also statt „HALLO“ 01001000 01000001 01001100 01001100 01001111.
Ich frage mich es eben deshalb weil ich mir nicht sicher bin ob ich einfach einen String schicken soll oder vorher diesen selbst binär kodieren soll – nach dem Empfang natürlich wieder dekodieren.
Das ganze soll natürlich dann Geschwindigkeitsvorteile bringen.
Ich gehe mal davon aus, dass es keinen Unterschied ausmacht ob ich die Daten zwischen zwei Prozessen auf einem Rechner oder im Netzwerk schicke – oder?
Gruß,
ich
- brandelh
- Foren-Moderator
- Beiträge: 15689
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hi,
intern kennt der Computer nur BINÄR. Strings sind also immer schon binär codiert und du kannst die locker direkt senden.
Allerdings wird intern meist nur ein Zeiger auf den String benutzt.
Was du eventuell gemeint hast sind Zahlen und deren interne Speicherung:
als String bzw. dezimal "1234" = 4 Byte
als Integer 16/32/64 Bit (gibt es bei Xbase++ nicht)
als Xbase Variable (keine Ahnung wie das intern läuft)
Letzteres wird dann wichtig wenn man Daten mit anderen Programmiersprachen oder dem BS tauschen will, intern kümmert sich Xbase++ um alles.
Oder habe ich die Frage falsch verstanden ?
intern kennt der Computer nur BINÄR. Strings sind also immer schon binär codiert und du kannst die locker direkt senden.
Allerdings wird intern meist nur ein Zeiger auf den String benutzt.
Was du eventuell gemeint hast sind Zahlen und deren interne Speicherung:
als String bzw. dezimal "1234" = 4 Byte
als Integer 16/32/64 Bit (gibt es bei Xbase++ nicht)
als Xbase Variable (keine Ahnung wie das intern läuft)
Letzteres wird dann wichtig wenn man Daten mit anderen Programmiersprachen oder dem BS tauschen will, intern kümmert sich Xbase++ um alles.
Oder habe ich die Frage falsch verstanden ?
Gruß
Hubert
Hubert
- brandelh
- Foren-Moderator
- Beiträge: 15689
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hi,
Wenn es auf andere Zielsysteme geht, weiß ich nicht was die erwarten.
Soweit ich es verstanden habe sind Named Pipes aber immer auf einen PC beschränkt. Mit einer InternetBibliothek (ASINET, XB2.NET etc.) könntest du TCPIP Sockets verwenden. Denen ist es egal ob ein Netz dazwischen liegt, solange die längere Laufzeit keine Rolle spielt.
ich habe jetzt den Link mal angesehen. Also bei Named Pipe kannst du Strings sicher direkt senden, andere Datentypen (Xbase zu Xbase) müssen wohl mit den BIN2? oder ?2BIN Befehlen eingepackt werden.Ich gehe mal davon aus, dass es keinen Unterschied ausmacht ob ich die Daten zwischen zwei Prozessen auf einem Rechner oder im Netzwerk schicke – oder?
Wenn es auf andere Zielsysteme geht, weiß ich nicht was die erwarten.
Soweit ich es verstanden habe sind Named Pipes aber immer auf einen PC beschränkt. Mit einer InternetBibliothek (ASINET, XB2.NET etc.) könntest du TCPIP Sockets verwenden. Denen ist es egal ob ein Netz dazwischen liegt, solange die längere Laufzeit keine Rolle spielt.
Gruß
Hubert
Hubert
-
- Rekursionen-Architekt
- Beiträge: 194
- Registriert: Fr, 24. Feb 2006 8:09
- Kontaktdaten:
Guten Morgen,
Gruß,
Notloesung
das hast du schon so richtig verstanden - auch wenn ich mich vielleicht etwas umständlich ausgedrückt habe.brandelh hat geschrieben:Oder habe ich die Frage falsch verstanden?
Das stimmt nicht. Schau mal auf http://de.wikipedia.org/wiki/Named_Pipe#Pipe-Varianten. Auch das Beispiel von Phil Ides kommuniziert miteinander wenn Server und Client auf verschiedenen Rechnern laufen.brandelh hat geschrieben:Soweit ich es verstanden habe sind Named Pipes aber immer auf einen PC beschränkt.
Das werde ich jetzt tun.brandelh hat geschrieben:Strings sind also immer schon binär codiert und du kannst die locker direkt senden.
Gruß,
Notloesung
- Martin Altmann
- Foren-Administrator
- Beiträge: 16502
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Jarek,
Sobald ein Router im Spiel ist, klappt das nicht.
Viele Grüße,
Martin
aber nur innerhalb eines Subnetzes...notloesung hat geschrieben:Auch das Beispiel von Phil Ides kommuniziert miteinander wenn Server und Client auf verschiedenen Rechnern laufen.
Sobald ein Router im Spiel ist, klappt das nicht.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
-
- Rekursionen-Architekt
- Beiträge: 194
- Registriert: Fr, 24. Feb 2006 8:09
- Kontaktdaten:
Hallo Martin,
Und wenn ich noch etwas zugeben muss, dann dies: es ist mir (zumindest momentan) völlig egal, denn das wofür ich es einsetze läuft alles lokal .
Gestern habe ich es mir erlaubt mir selbst auf die Schulter zu klopfen.
Der Grund: Ich habe es hinbekommen, dass unsere Standardsoftware (in der ich mit VBS "programmieren" kann) mit (jeder) meiner Xbase-Anwendungen kommunizieren kann (.exe-Anwendungen). Und das nachdem ich es fast schon aufgegeben hatte ...
Bisher zwar nur in einer Richtung - aber ich habe den Grundstein gelegt.
Das ganze ist zwar noch eine riesige Baustelle aber das wird schon in den kommen Tagen anders aussehen.
... und dieses "Erfolgs"-Erlebnis ist viel stärker, als dass ich mir jetzt Gedanken machen würde das das ganze im Netzwerk nicht "problemlos" laufen könnte. ... vielleicht später - wenn ich feststelle dass ich es doch im Netz brauche
Gruß,
Notloesung
An dieser Stelle muss ich zugeben, dass ich dieses nicht getestet habe.Martin Altmann hat geschrieben:aber nur innerhalb eines Subnetzes...
Sobald ein Router im Spiel ist, klappt das nicht.
Und wenn ich noch etwas zugeben muss, dann dies: es ist mir (zumindest momentan) völlig egal, denn das wofür ich es einsetze läuft alles lokal .
Gestern habe ich es mir erlaubt mir selbst auf die Schulter zu klopfen.
Der Grund: Ich habe es hinbekommen, dass unsere Standardsoftware (in der ich mit VBS "programmieren" kann) mit (jeder) meiner Xbase-Anwendungen kommunizieren kann (.exe-Anwendungen). Und das nachdem ich es fast schon aufgegeben hatte ...
Bisher zwar nur in einer Richtung - aber ich habe den Grundstein gelegt.
Das ganze ist zwar noch eine riesige Baustelle aber das wird schon in den kommen Tagen anders aussehen.
... und dieses "Erfolgs"-Erlebnis ist viel stärker, als dass ich mir jetzt Gedanken machen würde das das ganze im Netzwerk nicht "problemlos" laufen könnte. ... vielleicht später - wenn ich feststelle dass ich es doch im Netz brauche
Gruß,
Notloesung