Beiträge von sommeralex

    Guten Morgen! wenn ich auf einen InputStream Bytes einlese, werden diese (normalerweise sequentiell) eingelesen. Ich schicke nun Bytes von A nach B. A---------------------B Auf B werden die Bytes byte-weise eingelesen. Nun: 1) Hat das normale "Stream-Protokoll" eine Art BufferManagement, die verhindert, dass B mit dem Lesen nicht nachkommt? 2) Auf meiner J2ME Applikation kann ich nicht den ganzen ByteStream von meiner DesktopApplikation auf das Mobile schicken, da es zu einer Exception kommt. 3) Sollte ich mir das ganze aber nicht als "Rohr" vorstellen, auf dessen Ende, was eingelesen wurde, beseitigt (gelöscht, verworfen) wird so das es niemals zu einer Art überlauf kommen sollte? (Beispiel: ich schreib auf meinen OutputStream "yes" und "no" und auf der anderen Seite wird ständig "yes" und "no" empfangen, und ausgegeben, (ohne abzuspeichern) - sodass es niemals zu einem Speicherüberlauf kommen sollte. 4) schönen Sonntag ;)

    Wenn ich mein XML

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

    in einen DatainputStream umwandle, und dann mit readChar oder readByte wiederholt auslese, geschieht folgendes:

    readChar()
    readChar()
    readChar()

    führt zu:

    ?
    ?
    ?

    readByte()
    readByte()
    readByte()

    führt zu

    60
    63
    120

    frage eins: wo bleibt das "<" bei readChar()?
    frage zwei: warum springt readChar() nicht zum nächsten Char?

    Gibt es eine Möglichkeit, meine Input/OutputStream Aktionen "lokal" zu simulieren ohne eine Connection aufbauen zu müssen? Bzw wie kann man eine Connection zu testZwecken aufbauen, ohne auf eine echte URL zugreifen zu müssen? Was ich brauche, ist folgendes

    //url: XML.File
    InputStream in = new FileInputStream(url);
    DataInputStream dis = new DataInputStream(in);
    OutputStream out = new OutputStream();
    DataOutPutStream dos = new DataOutPutStream(out);

    while(notalleBytes){
    byte = dis.readByte();
    dos.writeByte();
    if alleBytes, break;
    }

    und nun das dos über eine Connection in ein dis umwandeln, damit man es lesen kann.

    ich versende nun - serverseitig - ein outputStream über eine StreamConnection welches als Inhalt ein String "hallo" und eine XML Datei enthält.

    dos.writeUTF("hello") //string

    //die xml datei ist etwas komplizierter
    //dos = DataOutputStream, dis DataInputStream

    //ich lese also die XML über ein FileInputStream ein

    InputStream in = new FileInputStream("my.xml");
    DataInputStream dis = new DataInputStream(in);

    //und schreibe sie dann, wie oben beschrieben, byte-weise am server in meinen outputstream - der per bluetooth übertragen wird.

    int off = 0;
    boolean read = true;
    while (read) {
    byte b = dis.readByte();
    dos.write(b);
    counter = counter + 1;
    dos.write(b);
    }


    auf meinem client habe ich den inputstream. ich kann dis.readUTF() machen und erhalte mein "Hallo"

    Es gelingt mir aber nicht, meine XML zu "lesen" - der XML parser will ein inputstream - das hab ich ja, und geb ich ihm, dennoch eine exception. woran könnte das nur liegen??

    ServerSeite:
    (out = DataOutputStream)

    String bitte = new String("bitte");
    out.write(bitte.getBytes());


    ClientSeite:
    (dis: DataInputStream)

    String bitte = new String("bitte");
    byte bitteByte[] = new byte[bitte.getBytes().length];
    dis.read(bitteByte);
    System.out.println(String.valueOf(bitteByte));

    Ausgabe:
    B@e5bf6f1d

    Frage:

    Warum ist die Ausgabe nicht "bitte"?

    Ich hab mal ein ProxyTool verwendet, mit dessen Hilfe ich auf einfache Art auf meinem PC angeschlossene PCs (über ein Netzwerkkabel ) internet-surfen lassen konnte. Alles, was man tun musste (neben installation am "server") war auf den clients im browser die ProxyIP einzugeben.

    Kennt das Programm vielleicht zufällig jemand oder ein ähnliches?

    lg alex

    Guten Morgen...

    Ich hab ein Connection Objekt, welches mir eine (funktionierende) Verbindung herstellt. Nun kann man über das Connection Objekt unterschiedliche Typen initialisieren:

    connection.openInputStream();
    connection.openInputStreamReader();
    connection.openDataInputStream();

    theorie: darf man über ein Connection Objekt mehrere Typen initialisieren? Also sowohl openInputStream + openInputStreamReader bzw DataInputStream?

    Meine Verbindung funktioniert über DataInputStream, wenn ich aber zum "mischen" anfange, gibts ein durcheinander.

    genau da liegt offenbar mein denkfehler. warum kann ein programm mit zwei prozessoren nicht mehr als doppelt so schnell sein?

    schon klar; jede cpu arbeitet in ihrer taktzahl instruktionen ab. zwei cpus können auch nur doppelt soviele instruktionen annehmen und daher maximal doppelt so schnell sein.

    aber:

    in dieser logik fehlt mir der synergiefeffekt. ich hab zwar kein praktisches beispiel, ein symbolisches: ein auto mit einem rad fährt schrecklich, mit zwei vorne (vorradantrieb) kann man zumindest lenken und optimal fährts mit 4 reifen ;) mit steigender radanzahl wächst der nutzen exponentiell bis zum optimum 4 und nimmt dann wieder ab.

    oder:

    3 menschen leisten 5 mal soviell wie einer. ungefähr klar, auf was ich hinaus möchte?

    The Sequential File: Diese Art der Strukturierung besteht aus einem fixen Format von Feldern mit fester Länge, in denen die Records gespeichert werden. Alle Records sind von der gelichen Länge, verwenden die gleiche Anzahl gleich großer, in einer festegelgten Reihenfolge sortierter Felder. Ein bestimtes Feld, meistens das erste, ist das sogenannte Schlüsselfeld. Dieses Feld identifiziert das gespeicherte Record eindeutig und bestimmt die Position des Recprs innerhalb der Datei (aus Rechnerarchitekturen und Kommunikationsnetze)

    Ist das verständlich?

    für mich: Feld = grundlegendes Datenelement, Record: Menge zusammengehörender Felder, Datei: Menge zusammengehörender Records. Laut Definition werden Records in Feldern gespeichert und haben selber Felder. ist das so?

    ok, mein skript ist sowieso nicht gut ;)

    Bezüglich Effizienz:

    Unter Effizienz (Ep) versteht man, wie gut ein Algorithmus p Prozessoren auslasten kann. Die E. ist definiert als Beschleunigungsgewinn je Prozessor und lautet daher:

    Ep = Sp / p

    (Sp..:SpeedUp)

    Der Effizienzbereich liegt zwischen den Werten 0 < Ep < 1 (sollen kleinergleich zeichen sein)


    ------------------------------------

    irgendwie gefällt mir diese Definition nicht. Angenommen, mein SpeedUp ist 5 mit 2 Prozessoren. Dann wäre

    5/2 = 2.5 - und 2.5 wäre nicht mehr im Effizienzbereich?