netzwerk programmierung:applet als server

Von: , Frage gestellt am Mo, 17. Jan 2005

Hallo zusammen.
ich habe eine Applet gebastelt die als server läuft

ServerSocket client = new ServerSocket(7777);
while (true)
{
Socket so = client.accept();
(new ClientThread(++cnt,so,appletContext,documentBase)).start();
}

die applet soll daten aus einem c programm, das auf einem anderen Rechner als client läuft empfangen und anzeigen.
ich habe aber festgestellt dass dies nich möglich ist wegen den sicherheitsmanager bei applets(keine netzwerkverbindung aufnehmen und andere einschränbkungen).
das c-programm ist an einem prozess gekoppelt und sendet die daten per socket bei jede änderung.

meine frage: wie kann ich am besten die Daten per socket in meine applet bekommen.

danke im voraus
youssef

4 Antworten zu dieser Frage

  1. Antwort von nach einer Stunde 0 hilfreich
    Re: netzwerk programmierung:applet als server

    Moin ich habe aber festgestellt dass dies nich möglich ist wegen
    den sicherheitsmanager bei applets(keine netzwerkverbindung
    aufnehmen und andere einschränbkungen).
    Stimmt. Applets können normalerweise nur Verbindung zu dem Server aufnehmen von dem sie stammen. ServerSockets sind schonmal gar nicht drin. Aber man kann sich mehr Rechte holen:

    http://www.javaworld.com/javaworld/jw-10-1998/jw-10-...

    (funktioniert nicht mit allen JVM's und ist nicht ganz sauber) das c-programm ist an einem prozess gekoppelt und sendet die
    daten per socket bei jede änderung.
    Kannst du den C-Process nicht den ServerSocket öffenen lassen ?

    cu

    • Antwort von nach 3 Stunden 0 hilfreich
      Re^2: netzwerk programmierung:applet als server

      hallo
      Kannst du den C-Process nicht den ServerSocket öffenen lassen
      ?
      was meinst du bitte hier damit?

      ich bin dabei eine idde auszuprobieren.
      habe in eine server-applikation zwei serversockets erstellt.dazu benutze ich 2 threads der den erste serversocket verwendet um die daten von c-prozess zu empfangen) und den zweiten thread der zweiten serversocket um diese daten zur applet zu senden).
      der erste thread empfängt die daten und schreibt sie in einem buffer und der zweite thread liest die daten aus dem buffer und sendet sie zu der applet.

      ist sowas machbar ?

      Gruss
      Youssef

      • Antwort von nach 4 Stunden 0 hilfreich
        Re^3: netzwerk programmierung:applet als server

        Moin Kannst du den C-Process nicht den ServerSocket öffenen lassen
        ?
        was meinst du bitte hier damit?
        Du braucht für eine Netzwerkverbindung immer einen der Server spielt und eien der Client ist. Wenn das c-Programm Server spielt ist das ganze einfacherer, weil applets ja als Client auf den Server zugreifen dürfen von dem sie kommen. habe in eine server-applikation zwei serversockets
        erstellt.dazu benutze ich 2 threads der den erste serversocket
        verwendet um die daten von c-prozess zu empfangen) und den
        zweiten thread der zweiten serversocket um diese daten zur
        applet zu senden).
        Das geht auch. Du brauchst dann aber einen Thread pro laufendes Applet (es könnten ja mehrere am laufen sein) und der buffer muss wissen was schon an fwelchen Thread gegangen ist.

        Oder einfacherer:
        Ein Thread der die Daten aus dem "EmpfangsServerSocket" holt und in alle offenen Verbindungen (zu Applets) schreibt. Ein 2. Thread startet die Verbindungen (also hört auf den ServerSocket und trägt die neuen Verbindungen in die Liste des 1. Thread ein). Dann kann man sich den Buffer, inklusive Verwaltung, sparen und das ganze läuft problemlos mit meheren aktiven Applets.

        cu

        • Antwort von nach 5 Stunden 0 hilfreich
          Re^4: netzwerk programmierung:applet als server

          hallo nochmal
          Du braucht für eine Netzwerkverbindung immer einen der Server
          spielt und eien der Client ist. Wenn das c-Programm Server
          spielt ist das ganze einfacherer, weil applets ja als Client
          auf den Server zugreifen dürfen von dem sie kommen.

          das ist klar. aber leider läuft das c programm bei mir als client (SOCKET ERZEUGEN, DATEN SENDEN )
          socket(..)
          ..
          connect(..)
          ..
          send(..)
          ..




          Das geht auch. Du brauchst dann aber einen Thread pro
          laufendes Applet (es könnten ja mehrere am laufen sein) und
          der buffer muss wissen was schon an fwelchen Thread gegangen
          ist.

          momentan nehmehn wir an ,dass wir nur eine applet am laufen haben. Oder einfacherer:
          Ein Thread der die Daten aus dem "EmpfangsServerSocket" holt
          und in alle offenen Verbindungen (zu Applets) schreibt. Ein 2.
          Thread startet die Verbindungen (also hört auf den
          ServerSocket und trägt die neuen Verbindungen in die Liste des
          1. Thread ein). Dann kann man sich den Buffer, inklusive
          Verwaltung, sparen und das ganze läuft problemlos mit meheren
          aktiven Applets.

          cu
          das muss ich erst nachvollziehen und ausprobieren
          danke

          Gruss
          Youssef

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!