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
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
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
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
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
- 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