so habe hier eine anwendung.
hab sie natürlich großzügig beschnitten, dass nur die teile drin sind, die relevant sind:
es handelt sich um eine RMI anwendung die aus einem server und einem client besteht.
diese ist teil einer studienarbeit in der verschiedene transferprotokolle tcp/udp und diese rmi anwendung in der geschwindigkeit verglichen werden.
die aufgabe ist es ein datenpaket(in diesem fall ein objekt) vom typ echoPDU hin und her zu schicken.
dabei musste man ein paar test, RTT etc machen.
der server erstellt die registery lokal, named das objekt RMIServer und der client sucht dannach und ruft die methode ECHO auf. und genau jetzt kommt mein problem.
mir gehts jetzt speziell um die methode ECHO in der server implementierung.
was macht die genau? in der tcp/udp version haben wir entweder datenströme oder datagramm pakete rumgeschickt. was passiert jetzt bei rmi ?
vielen dank schonmal
SERVER:
CLIENT:
dann noch relevant ist die server implementierung:
hab sie natürlich großzügig beschnitten, dass nur die teile drin sind, die relevant sind:
es handelt sich um eine RMI anwendung die aus einem server und einem client besteht.
diese ist teil einer studienarbeit in der verschiedene transferprotokolle tcp/udp und diese rmi anwendung in der geschwindigkeit verglichen werden.
die aufgabe ist es ein datenpaket(in diesem fall ein objekt) vom typ echoPDU hin und her zu schicken.
dabei musste man ein paar test, RTT etc machen.
der server erstellt die registery lokal, named das objekt RMIServer und der client sucht dannach und ruft die methode ECHO auf. und genau jetzt kommt mein problem.
mir gehts jetzt speziell um die methode ECHO in der server implementierung.
was macht die genau? in der tcp/udp version haben wir entweder datenströme oder datagramm pakete rumgeschickt. was passiert jetzt bei rmi ?
vielen dank schonmal
SERVER:
Java:
public class RMIEchoServer
{
public static void main (String args[])
{
PropertyConfigurator.configureAndWatch("log4j.server.properties", 60 * 1000);
Registry rmiRegistry = null;
{
try {
LocateRegistry.createRegistry(1099);
// RMI START: Registery wird LOKAL angelegt
Naming.rebind("RMIServer", new RMIEchoServerImpl());
CLIENT:
Java:
//der Client sucht in der REGISTRY nach unserem Server (RMIServer)
echoServer = (RMIEchoServerInterface)Naming.lookup("rmi://"+ "192.168.0.103" + ":" + 1099 + "/RMIServer");
// echoServer = (RMIEchoServerInterface)Naming.lookup("rmi://"+ "127.0.0.1" + ":" + 1099 + "/RMIServer");
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NotBoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void run()
{
for (int i = 0; i < numberOfMessages; i++)
{
//RTT Daten werden ermittelt, nachricht wird erzeugt(nachrichtenlänge festgelegt), Name eingestellt,
rttStartTime = System.nanoTime();
sharedData.incrSentMsgCounter(numberOfClient);
EchoPDU test1 = new EchoPDU();
// test1.setClientName(Thread.currentThread().getName());
test1.setMessage(test1.neueNachricht(messageLength));
rtt = System.nanoTime() - rttStartTime;
sharedData.incrReceivedMsgCounter(numberOfClient, rtt, test1.getServerTime());
dann noch relevant ist die server implementierung:
Java:
public RMIEchoServerImpl() throws RemoteException
{
}
public EchoPDU echo(EchoPDU message) throws RemoteException
{
//RTT Daten werden gesammelt, EchoPDU verarbeitet
long startTime = System.nanoTime();
EchoPDU sendPdu = null;
sendPdu = message;
// message.setClientName(Thread.currentThread().getName());
startTime = System.nanoTime() - startTime;
sendPdu.setServerTime(startTime);
return sendPdu;
}