我在代码中使用了RMI:
import java.rmi.*;
public interface AddServerIntf extends Remote {
double add(double d1,double d2) throws RemoteException;
}
import java.rmi.*;
import java.rmi.server.*;
public class AddServerImpl extends UnicastRemoteObject implements AddServerIntf {
public AddServerImpl() throws RemoteException {
}
public double add(double d1,double d2) throws RemoteException {
return d1+d2;
}
}
import java.net.*;
import java.rmi.*;
public class AddServer {
public static void main(String args[]) {
try {
AddServerImpl addServerImpl=new AddServerImpl();
Naming.rebind("AddServer",addServerImpl);
} catch(Exception exc) {
System.out.println(exc);
}
}
}
import java.rmi.*;
public class AddClient {
public static void main(String args[]) {
try {
String Url="rmi://"+args[0]+"/AddServer";
AddServerIntf addServerIntf=(AddServerIntf)Naming.lookup(Url);
System.out.println("The first number is "+args[1]);
double d1=Double.valueOf(args[1]).doubleValue();
System.out.println("The second number is: "+args[2]);
double d2=Double.valueOf(args[2]).doubleValue();
System.out.println("The Sum is: "+addServerIntf.add(d1,d2));
} catch(Exception exc) {
System.out.println(exc);
}
}
}
这些是4个.java文件。
接下来我编译所有这些文件。然后我使用stub
创建rmic AddServerImpl
。之后,我使用start rmiregistry
在服务器端启动rmi注册表。然后我使用java AddServer
启动服务器,最后使用java AddClient 27.60.200.80 5 9
启动客户端。
但没有任何反应
客户端抛出的异常是java.net.ConnectException : connection timed out : connect
原因是什么?如何解决这个问题?
在客户端计算机上,这些是.class文件AddClient.class AddServerImpl.class AddServerImpl_Stub.class
和服务器端AddServer.class AddServerImpl.class AddServerImpl_Stub.class AddServerIntf.class
答案 0 :(得分:33)
错误消息说明了一切:您的连接超时。这意味着您的请求未在某个(默认)时间范围内得到响应。没有收到答复的原因可能是:
请注意,您的ISP可能已安装防火墙和端口或IP阻止
答案 1 :(得分:0)
数字(1):IP不正确 - 是正确的答案。 / etc / hosts文件(a.k.a. C:\ Windows \ system32 \ drivers \ etc \ hosts)本地计算机名称的条目不正确。 更正了'hosts'文件,Camel运行得非常好。谢谢你的指针。
答案 2 :(得分:0)
异常:java.net.ConnectException
这意味着您的请求未在规定时间内收到服务器的响应。他们是这个例外的一些原因:
答案 3 :(得分:-1)
如果您将配置指向某个域(例如fabrikam.com),请执行NSLOOKUP以确保所有响应的IP都有效,并且可以连接到端口389:
NSLOOKUP fabrikam.com
Test-NetConnection <IP returned from NSLOOKUP> -port 389