Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
wie kann man es am einfachsten bewerkstelligen, dass Applets, die von unterschiedlichen Rechnern aufgerufen werden, auf gemeinsame Daten zugreifen können? Wenn irgendwie möglich ohne Sockets.
Anwendungsbeispiel wäre ein Chat Applet, bei dem sich die einzelnen Applets untereinander ja irgendwie verständigen müssen.
Also Applet's "laufen" nicht auf einem Server sondern wohl eher auf verschiedenen Clients.
Eine Variante: Die Clients registrieren sich bei einem Server und senden ihre Daten immer an diesen Server und dieser verteilt die Daten an die Clients.
Benutze aber mal die Suche! Hier gibt es einige Beispiele zu dem Thema.
Ja, das ist genau mein Problem. Wenn sie auf dem gleichen System laufen würden, dann könnte man es ja wahrscheinlich einfach über statische Variablen lösen. Aber naja, werd ich mich doch mal mit Sockets auseinandersetzen müssen ???:L
Nö... vergiss die Sockets... spar dir überflüssiges signieren...
Wenn es um Chat-Applikationen oder -Applets geht ist der genannte Link wohl der richtige. Um einfach ("Spionage" -) Daten von einem Client zum anderen zu übertragen gibt es einen Umweg über PHP-Ähnliche Server-Software. Da unsignierte Applets (nur) auf den Server zugreifen können von dem sie stammen, können sie dort z.B. ein PHP-Script aufrufen, welches übermittelte Daten z.B. in einer Datenbank speichert. Dasselbe Applet (welches logischerweise wieder vom selben Server kommt) kann diese Daten nun sogar von einem anderen Client wieder abrufen und ggf. neue Speichern.
Hier ist mal ein Beispiel, welches lesend auf ein PHP-Script zugreift. Als ergebnis erhält das Applet den die Ausgabe des Scripts, jedoch nicht das Script selber:
Code:
public String getStatusText(String Scriptname)
{
String rc = "";
try {
URL tmp = new URL(getDocumentBase(), Scriptname);
URLConnection con = tmp.openConnection();
con.setDoInput(true);
con.setUseCaches(false);
con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
DataInputStream in = new DataInputStream(con.getInputStream());
byte[] buf = new byte[4096];
boolean end = false;
int pos;
while (!end) {
pos = in.read(buf, 0, 4096);
rc += new String(buf);
end = (pos != -1)? false : true;
}
} catch (Exception ee) {
ee.printStackTrace(System.err);
} catch (Error ee) {
ee.printStackTrace(System.err);
}
return rc;
}
Zu bedenken: PHP ist nicht verpflichtet, unbedingt HTML-Text zu erstellen. Sollte PHP auf dem Server so konfiguriert sein, das der erweiterte HTML-Header ausgegeben wird, empfielt es sich die vom Applet auszuwertenden Daten innerhalb von eindeutigen String-Sequenzen zu übermitteln. z.B.
Am einfachsten wäre es, wenn du ein Servlet benutzt! Die Applets senden und empfagenen Daten vom Servlet. Deklariere einfach eine Variable ausserhalb von jeder Methode, auf die haben dann alle Applets Zugriff und können diese setzen und auslesen, ist relativ einfach, es gibt im Netz ein paar gute Tuts dazu.
Du brauchst lediglich noch einen Tomcat - Server!