提问人:YAChee 提问时间:11/15/2021 最后编辑:user207421YAChee 更新时间:1/24/2022 访问量:79
我运行下面的 RMI 程序,但它显示命令执行失败
i run the rmi program below but it shows command execution failed
问:
此程序应从客户端向服务器发送文本消息。我完成了文件的编译。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);
}
}
}
请帮我更正代码。谢谢
答:
0赞
Developer
11/15/2021
#1
从 args 数组读取元素时似乎发生错误。 请检查您正在传递的参数的长度。 在从中读取元素之前,我们还应该始终检查 args[] 的长度。 请参阅以下链接和答案 什么是“String args[]”? main 方法 Java 中的参数
上一个:索引出界,尽管没有出界?
下一个:剩余参数的计数
评论