RMI question

FirFlies <[email protected]> Mon, 27 Oct 2008 23:59:47 -0700
Newsgroups gmane.comp.java.sun.rmi
Message-ID <[email protected]>
hello
i have the code:

import java.net.*;
import java.io.*;
 
public class Server{
  public static void main(String []args){
    DatagramSocket socket=null;
    int serverPort=7999;
    
    try{
//creating a new DatagramSocket
       socket=new DatagramSocket(serverPort);
    }
    catch(Exception e){
       System.out.println("DatagramSocket-error-"+e.getMessage());
       System.exit(0);
    }
    
   //server activation
    
    boolean listening=true;
    DatagramPacket packet=null;
    App app=new App();
    Protocol p=null;
    
    while(listening){
      try{
 
        byte[] bin=new byte[4048];
        packet=new DatagramPacket(bin,bin.length);
        socket.receive(packet);
   
        ByteArrayInputStream bais=new ByteArrayInputStream(bin);
        ObjectInputStream in=new ObjectInputStream(bais);
        p=(Protocol)in.readObject();
        
//resolve the client's query
        p.x=app.compute(p.x,p.y);
        p.y=0;
    
      //transform message into a stream
        ByteArrayOutputStream baos=new ByteArrayOutputStream(256);
        ObjectOutputStream out=new ObjectOutputStream(baos);
        out.writeObject(p);
        byte[] bout=baos.toByteArray();
       //send the message
        InetAddress address=packet.getAddress();
        int port=packet.getPort();
        packet=new DatagramPacket(bout,bout.length,address,port);
        socket.send(packet);
      }
      catch(Exception e){
        System.out.println(e.getMessage());
      }
    }
    socket.close();
  }
}

and the client:

import java.net.*;
import java.io.*;
import java.util.Scanner;
 
public class ClientCmmdc{  
  public static void main(String []args){    
    String hostServer="localhost";
    int portServer=7999;
    if(args.length>0)
       hostServer=args[0];
    if(args.length>1)
       portServer=Integer.parseInt(args[1]);
    try{
       DatagramSocket socket=new DatagramSocket();
       
       Protocol p=new Protocol(0,0);
       Scanner scanner=new Scanner(System.in);
       System.out.println("First number: ");
       p.x=scanner.nextLong();
       System.out.println("Last number: ");
       p.y=scanner.nextLong();
       
//transform the message into a stream
       ByteArrayOutputStream baos=new ByteArrayOutputStream(256);
       ObjectOutputStream out=new ObjectOutputStream(baos);
       out.writeObject(p);
       byte[] bout=baos.toByteArray();
 
//send the message
       InetAddress address=InetAddress.getByName(hostServer);
       DatagramPacket packet=new
DatagramPacket(bout,bout.length,address,portServer);
       socket.send(packet);
    
//waiting for response
       byte[] bin=new byte[4048];
       packet=new DatagramPacket(bin,bin.length);
       socket.receive(packet);
    
//getting the response
       ByteArrayInputStream bais=new ByteArrayInputStream(bin);
       ObjectInputStream in=new ObjectInputStream(bais);
       p=(Protocol)in.readObject();
       System.out.println("Result is: "+p.x);
    
       socket.close();
    }
    catch(Exception e){
       System.out.println(e.getMessage());
    } 
  }
}

Protocol class is:

import java.io.*;
 
public class Protocol implements Serializable{
  long x,y;
  Protocol(long x,long y){
    this.x=x;
    this.y=y;
  }
}

and finally the App class is the class with one method, to calculate the
divisor of a two numbers:

public class App{
  public long compute(long m,long n){
    long r,c;
    do{
       c=n;
       r=m%n;
       m=n;
       n=r;
       }
    while(r!=0);
    return c;
  }
}

i am not able to run this class with Datagram Channel. if anyone does really
help me, i would appreciate. with DatagramPacket, it's all ok, but using
Datagram Channel i really did not know how to solve the problem. with
DatagramPacket it works,so it's about the still problem, just using Datagram
Channel. 
Thanks
-- 
View this message in context: http://www.nabble.com/RMI-question-tp20202198p20202198.html
Sent from the Java - RMI mailing list archive at Nabble.com.

===========================================================================
To unsubscribe, send email to [email protected] and include in the body
of the message "signoff RMI-USERS".  For general help, send email to
[email protected] and include in the body of the message "help".

For a list of frequently asked RMI questions please refer to:
http://java.sun.com/j2se/1.3/docs/guide/rmi/faq.html

To view past RMI-USERS postings, please see:
http://archives.java.sun.com/archives/rmi-users.html