tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
538
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Jul 2002
    Ort
    Frankfurt (Hessen)
    Beiträge
    2.135
    ... 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
     

  2. #2
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    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
     

  3. #3
    Avatar von davedigital
    davedigital davedigital ist offline Mitglied Silber
    Registriert seit
    Jul 2002
    Ort
    Österreich
    Beiträge
    81
    Welche Performance sollte das Programm aufweisen Willst du wirlich effizienten Code würde ich nicht unbedingt zu Socket raten - erst recht nicht zu Files

    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
    Geändert von davedigital (03.09.04 um 12:41 Uhr)
     

  4. #4
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.802
    Blog-Einträge
    5
    Hm, Unix Domain Sockets wären hier passend, allerdings werden die AFAIK von Java nicht direkt unterstützt (müsstest also wieder über das JNI gehen).
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  5. #5
    Registriert seit
    Jul 2002
    Ort
    Frankfurt (Hessen)
    Beiträge
    2.135
    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*
     

  6. #6
    Registriert seit
    Jan 2002
    Ort
    Bayern
    Beiträge
    1.390
    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
     
    we would change the world if god gave us the source code...
    and remember, science is nothing more than reverse engineering nature...

    Current projects:
    - LdrawConverter

  7. #7
    Avatar von squeaker
    squeaker squeaker ist offline Mitglied Platin
    Registriert seit
    Jun 2004
    Ort
    Würzburg
    Beiträge
    577
    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.
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 25.08.05, 04:19
  2. Antworten: 1
    Letzter Beitrag: 12.03.05, 20:07
  3. animated Gif in andren Bildern?
    Von Collateral im Forum Vektor-Programme
    Antworten: 2
    Letzter Beitrag: 17.04.04, 18:25
  4. Auf Localhost vom andren Rechner zugreifen
    Von mcphilli im Forum Netzwerke
    Antworten: 2
    Letzter Beitrag: 06.04.04, 14:53
  5. Datei in einem andren Ordner
    Von mæstrø im Forum PHP
    Antworten: 6
    Letzter Beitrag: 16.10.01, 19:03