论坛: 编程破解 标题: 求助:关于javarmi 复制本贴地址    
作者: mensch [mensch]    论坛用户   登录
  一个用java rmi做的程序,包括Server,Client,ServerInterface,要求:
  server能够自定义端口;能接收来自client的字符消息,变换大小写以后再发送回client;能够得到client的ip;
  client输入server的ip和port后,向server发送字符消息,并能接收server转换过的字符消息;
  下面是我的程序:
************************
* ServerInterface.java *
************************
import java.rmi.*;

public interface ServerInterface extends java.rmi.Remote
{
    public String message(String client_msg,String client_ip) throws java.rmi.RemoteException;
}
*******************
*   Server.java   *
*******************
import java.rmi.*;
import java.rmi.server.*;
import java.util.*;
import java.rmi.registry.*;
import java.io.*;


public class Server extends UnicastRemoteObject implements ServerInterface{

    int i=0;

    public Server() throws java.rmi.RemoteException{
        super();
    }


    public String message(String client_msg,String client_ip) throws java.rmi.RemoteException{
        i++;
        do{
            System.out.println("ip ist:" + client_ip);
            System.out.println(i + ". Message vom Client: " + client_msg + "\n");

            char[] buffer = client_msg.toCharArray();

            for(int i=0;i<client_msg.length();i++){
                if (Character.isUpperCase(buffer[i])){
                    buffer[i]=Character.toLowerCase(buffer[i]);
                }else{
                    if(Character.isLowerCase (buffer[i])) buffer[i]=Character.toUpperCase(buffer[i]);
                }
            }

            String server_msg = String.valueOf(buffer);
            System.out.println("Message zurueckgeschikt!");
            return(server_msg);
        }while(true);
    }

    public static void main(String[] args){

           try{
               BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
               System.out.print("Port des Servers: ");
               int port = inFromUser.read();
          
               LocateRegistry.createRegistry(port);
               Server server = new Server();
               Naming.rebind("rmi://localHost:"+port+"/Data",server);
               System.out.println("Warte auf Anfragen...");
           }
           catch(Exception e){
               e.printStackTrace();
           }
    }
}
*******************
*   Client.java   *
*******************
import java.io.*;
import java.rmi.*;
import java.net.*;

public class Client{

    InetAddress myIPaddress=null;
    static ServerInterface server;
    static String clientIP;

    public void getMyIP() {
        try {
            myIPaddress=InetAddress.getLocalHost();
        }catch(java.net.UnknownHostException e) {}
        String cip = myIPaddress.toString();
        clientIP = cip.substring(cip.indexOf("/") + 1);
    }

    public static void main(String[] args) throws java.rmi.RemoteException{

     try{
        BufferedReader inData = new BufferedReader(new InputStreamReader(System.in));

        System.out.print("IP-Adresse(Servers): ");
        String serverip = inData.readLine();
        System.out.println();

        System.out.print("Port(Servers): ");
        int serverport = inData.read();
        System.out.println();
    
        Client c = new Client();
        c.getMyIP();


        server = (ServerInterface) Naming.lookup("rmi://"+serverip+":"+serverport+"/Data");
        do{

            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
            System.out.print("Message des Nutzers eingegeben: ");
            String client_msg = in.readLine();// + "\n" + "IP:   " + client_ip);




            System.out.println(clientIP);
            System.out.println("Message from Server: " + server.message(client_msg,clientIP));
            System.out.println();
            System.out.println();

            }while(true);
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}
    程序都可以编译,但是运行以后系统提示:"Exception in thread "main" java.lang.AbstractMethodError at Client.main(Client.java:47)"
    出错是因为我在client里面调用server.message()的时候改为server.message(client_msg,client_ip),(注:如果是server.message(client_msg)则程序可以正常运行).
    注:我的client的ip是在客户端得到后告诉给server的
    程序百思不得其解,请高手指教
    谢~~~~~~~~~~~~~~~~~

地主 发表时间: 06/12 02:25

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号