0

该程序应该从客户端向服务器发送一条文本消息。我完成了编译文件。server.java 运行成功,但 client.java 显示错误。
错误列表太长,所以我只截图了几行。 在此处输入图像描述

这是代码
ReceiverMessageInterface.java

package com.mycompany.dsa3;
import java.rmi.*;

public interface ReceiveMessageInterface extends Remote{
  void receiveMessage(String x) throws RemoteException;
}

RmiServer.java

package com.mycompany.dsa3;
import java.rmi.*;
import java.rmi.registry.*;
import java.rmi.server.*;
import java.net.*;

public class RmiServer extends 
  java.rmi.server.UnicastRemoteObject implements ReceiveMessageInterface{
  String address;
  Registry registry; 

  public void receiveMessage(String x) throws RemoteException{
  System.out.println(x);
  }
  
  public RmiServer() throws RemoteException{
  try{  
  address = (InetAddress.getLocalHost()).toString();
  }
  catch(Exception e){
  System.out.println("can't get inet address.");
  }
  int port=3232; 
  System.out.println("this address=" + address +  ",port=" + port);
  try{
  registry = LocateRegistry.createRegistry(port);
  registry.rebind("rmiServer", this);
  }
  catch(RemoteException e){
  System.out.println("remote exception"+ e);
  }
  }
  static public void main(String args[]){
  try{
  RmiServer server = new RmiServer();
  }
  catch (Exception e){
  e.printStackTrace();
  System.exit(1);
  }
  }
}

RmiClient.java

package com.mycompany.dsa3;
import java.rmi.*;
import java.rmi.registry.*;
import java.net.*;

public class RmiClient{
  static public void main(String args[]){
  ReceiveMessageInterface rmiServer;
  Registry registry;
  String serverAddress=args[0];
  String serverPort=args[1];
  String text=args[2];
  System.out.println    ("sending " + text + " to " +serverAddress + ":" + serverPort);
  try{
  registry=LocateRegistry.getRegistry
  (serverAddress,(new Integer(serverPort)).intValue());
  rmiServer=(ReceiveMessageInterface)(registry.lookup("rmiServer"));
  // call the remote method
  rmiServer.receiveMessage(text);
  }
  catch(RemoteException e){
  e.printStackTrace();
  }
  catch(NotBoundException e){
  System.err.println(e);
  }
  }
}  

请帮我更正代码。谢谢

4

1 回答 1

0

从 args 数组中读取元素时似乎发生了错误。请检查您传递的参数的长度。在从中读取元素之前,我们还应该始终检查 args[] 的长度。请参阅下面的链接和答案 什么是“String args []”?主要方法Java中的参数

于 2021-11-15T05:36:22.490 回答