sagt das eine Programm zum andren ..

melmager

Erfahrenes Mitglied
... ich habe da mal eine Info für dich :)
Es geht um Kommunikation zwischen Programmen im Linux (Unix)
Umfeld - oder wie können sich zwei Programme "unterhalten"

Ich komme in meinem aktuellen Projekt an ein Punkt wo sich mehrere Programme untereinander austauschen müssen. Da einige Teile von meinem Projekt recht Hardwarenah sind muss ich Java und C Programme kombinieren.
Da das JNI Interface eine Strafe dafür ist, das ich in meiner Kindheit keinen Spinat gegessen habe :) würde ich gern das Teil verbannen.
- mit andren Worten ich bekomme es nicht "gebacken"
- also schreibe ich mehrere Programme in C / Java die sich untereinander austauschen müssen.

Jetzt die Frage welche Möglichkeiten gibt es da und wo sollte ich mich mehr einlesen?

A) Sockets - sieht einfach aus und wird von jeder Prorammiersprache unterstützt
was mich stört ist das das ganze immer übers Netz geht - irgendwie dumm wenn die Programme die Daten austauschen wollen auf dem gleichen Rechner laufen

B) IPC mit Pipes - (noch kein Plan :) sieht aber so aus als würde sowas auch in Java geben.

C) Files: der eine Schreibt rein - der andre liest raus - ich sachmal naja *g*

und welche Möglichkeiten gibt es sonst noch ?
Was benutzt Ihr für den Austausch von Infos/Daten
 
Hallo!

A) Sockets - sieht einfach aus und wird von jeder Prorammiersprache unterstützt
was mich stört ist das das ganze immer übers Netz geht - irgendwie dumm wenn die Programme die Daten austauschen wollen auf dem gleichen Rechner laufen

Kein Problem dank des sogenannten Loopback Interfaces... das ist ein implizites Netzwerk indem der Lokale Rechner der einzige Teilnehmer ist.

Gruß Tom
 
Welche Performance sollte das Programm aufweisen Willst du wirlich effizienten Code würde ich nicht unbedingt zu Socket raten - erst recht nicht zu Files :eek:

Klar, JNI brauchst du erstmal etwas Einarbeitungszeit, doch dafür schnelle(n) Code/Kommunikation, wobei nicht erst zig Layer abgearbeitet werden müssen, was bei Sockets der Fall ist.

Sun bietet doch eh ein recht gutes Tutorial und wenn du Interesse hast kann ich dir auch eine Zusammenfassung/Einführung und Beispielprogramme senden
 
Zuletzt bearbeitet:
Ich glaube ich wühle mich mal in FIFOs ein

Habe da was für Java gefunden und für C auch

So wie es bisher verstehe arbeiten die ähnlich wie eine Datei -

@davedigital danke für das Angebot - das JNI Tut bei Sun kenne ich :)
Ich habe bei JNI ein massives Problem mit Arrays
um da mal in Detail zu gehen: Ich habe in C ein Array mit unsign Char (also 1 Byte pro Wert)
und das einzige was in Java in der Richtung gibt ist Byte und dann mit Vorzeichen :-(

ich bekomme also beim Datentransport ein Vorzeichen was ich nicht brauchen kann
- ich mache gern ein Thread in Java zu dem Thema auf :)
Nur scheint hier noch keiner mit JNI geabeitet zu haben

Ich fühle mich wie Enterprise : Vorstossen in Regionen wo noch nie einer vor Ihm war *g* :)
 
Also ich würde die Variante B anpacken.
Die hats zwar insich, aber an Geschwindigkeit hat sie bestimmt die Nase vorn.
Unter Windows gäbe es die möglichkeit COM zu nutzen.
Unter UNIX kann man über IPC sogar eine komplette COM-Komunikation aufbauen (wenn man das Know-How hat)

Gruß Homer
 
Wo ist das Problem mit den Vorzeichen? Du kopierst in Java dann einfach den Bytearray in einen Integerarray um. Und danach machst du das Vorzeichen rückgängig. Wenn positiv oder 0, dann unverändert. Wenn negativ, dann Invertieren sprich XOR mit FFFF. Genaueres siehe Wikipedia.
 

Neue Beiträge

Zurück