skratchi.at
Ensign
- Registriert
- Dez. 2008
- Beiträge
- 205
hi leute.
hab jetzt sommerferien und da es draußen ned immer so schön ist habe ich mir ein kleines projekt gesucht.
ich will einen instant messanger programmieren.
ich hätte mir rmi dafür angelacht, habe aber dabei ein problem:
ich hab zwei rechner angeworfen, also auf einen server und auf einen client, die beispiele aus meinem buch genommen ("Java als erste Programmiersprache" Auflage 5) und iwie bekomm ichs ned zum laufen.
Im konkreten spakt der client...
das wär mal der beispielcode.
Was mache ich falsch?
was muss ich tun damit es funktioniert?
gibt es einen andere sogar bessere möglichkeit?
lg und danke
skratchi
hab jetzt sommerferien und da es draußen ned immer so schön ist habe ich mir ein kleines projekt gesucht.
ich will einen instant messanger programmieren.
ich hätte mir rmi dafür angelacht, habe aber dabei ein problem:
ich hab zwei rechner angeworfen, also auf einen server und auf einen client, die beispiele aus meinem buch genommen ("Java als erste Programmiersprache" Auflage 5) und iwie bekomm ichs ned zum laufen.
Im konkreten spakt der client...
Code:
// Datei: RMIClient.java
import java.rmi.*;
import java.net.*;
public class RMIClient
{
private static final String HOST = "localhost";
private static final String BIND_NAME = "RMI-Server";
public static void main (String[] args)
{
try
{
String bindURL = "rmi://" + HOST + "/" + BIND_NAME;
RMIServer server = (RMIServer) Naming.lookup (bindURL);
System.out.println
("Remote-Referenz erfolgreich erhalten.");
System.out.println ("Server ist gebunden an: " + bindURL);
// setString() des Server-Objektes aufrufen
server.setString ("Hallo Server");
System.out.println
("Methode setString() des Servers aufgerufen");
}
catch (NotBoundException e)
{
// Wenn der Server nicht registriert ist ...
System.out.println ("Server ist nicht gebunden:\n" +
e.getMessage());
}
catch (MalformedURLException e)
{
// Wenn die URL falsch angegeben wurde ...
System.out.println ("URL ungültig:\n" + e.getMessage());
}
catch (RemoteException e)
{
// Wenn während der Kommunikation ein Fehler auftritt
System.out.println ("Fehler während Kommunikation:\n" +
e.getMessage());
}
}
}
Code:
// Datei: RMIServer.java
import java.rmi.*;
public interface RMIServer extends Remote
{
// Methode des Servers, die remote ausgeführt werden kann
void setString (String str) throws RemoteException;
}
Code:
// Datei: RMIServerImpl.java
import java.rmi.*;
import java.rmi.server.*;
import java.net.*;
public class RMIServerImpl extends UnicastRemoteObject
implements RMIServer
{
private static final String HOST = "localhost";
private static final String SERVICE_NAME = "RMI-Server";
public RMIServerImpl() throws RemoteException
{
String bindURL = null;
try
{
bindURL = "rmi://" + HOST + "/" + SERVICE_NAME;
Naming.rebind (bindURL, this);
System.out.println (
"RMI-Server gebunden unter Namen: "+ SERVICE_NAME);
System.out.println ("RMI-Server ist bereit ...");
}
catch (MalformedURLException e)
{
System.out.println ("Ungueltige URL: " + bindURL);
System.out.println (e.getMessage());
System.exit (1);
}
}
// Die in der Remote-Schnittstelle RMIServer deklarierte Methode
// setString() muss in der Server-Klasse implementiert werden
public void setString (String s) throws RemoteException
{
System.out.println ("Nachricht vom Client erhalten: " + s);
}
public static void main (String[] args)
{
try
{
new RMIServerImpl();
}
catch (RemoteException e)
{
System.out.println
("Fehler waehrend der Erzeugung des Server-Objekts");
System.out.println (e.getMessage());
System.exit (1);
}
}
}
das wär mal der beispielcode.
Was mache ich falsch?
was muss ich tun damit es funktioniert?
gibt es einen andere sogar bessere möglichkeit?
lg und danke
skratchi