我对如何让我的客户端将对象发送到服务器的理解有问题。所以我有一个名为“RMIInterface”的接口和客户端“RMIClient”和服务器“RMIServer”类:
RMI接口
public interface RMIInterface extends Remote {
public String getMessage(String text) throws RemoteException;
}
Run Code Online (Sandbox Code Playgroud)
客户端
public class RMIClient {
private void connectToServer() {
try {
Registry registry = LocateRegistry.getRegistry("127.0.0.1", 1099);
RMI rmi = (RMI) registry.lookup("server");
System.out.println("Connected to Server");
String text = rmi.getMessage("RMITest Message");
System.out.println(text);
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) {
RMIClient client = new RMIClient();
client.connectToServer();
}
}
Run Code Online (Sandbox Code Playgroud)
RMI服务器
public class RMIServer extends UnicastRemoteObject implements RMIInterface {
public RMIServer() throws RemoteException {
super();
}
@Override
public String getMessage(String text) throws RemoteException {
return "Your message is: " + text;
}
public static void main(String[] args) {
try {
Registry registry = LocateRegistry.createRegistry(1099);
registry.rebind("server", new RMIServer());
System.out.println("Server started!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用这个程序,我可以连接到带有客户端的服务器,并在客户端控制台中打印一条消息。我的问题是,如何将消息从客户端发送到服务器,并在服务器控制台输出中打印该消息?请做最简单的代码示例
小智 6
虽然已经一年多了,但我还是分享一下解决方案,以防有人像我昨天一样来这里解决问题。
RMI接口
import java.rmi.*;
public interface RMIInterface extends Remote {
public void sendMessage(String text) throws RemoteException;
public String getMessage(String text) throws RemoteException;
}
Run Code Online (Sandbox Code Playgroud)
客户端
import java.rmi.*;
import java.rmi.registry.*;
public class RMIClient {
public static void main(String[] args) {
String text = "RMI Test Message";
RMIInterface rmi = null;
try {
Registry registry = LocateRegistry.getRegistry("127.0.0.1", 1099);
rmi = (RMIInterface) registry.lookup("server");
System.out.println("Connected to Server");
} catch (Exception e) {
e.printStackTrace();
}
if (rmi != null) {
try {
rmi.sendMessage(text);
System.out.println(rmi.getMessage(text));
} catch (RemoteException e) {
e.printStackTrace();
}
System.out.println("Finished");
}
}
}
Run Code Online (Sandbox Code Playgroud)
RMI服务器
import java.rmi.*;
import java.rmi.registry.*;
import java.rmi.server.*;
public class RMIServer implements RMIInterface {
@Override
public void sendMessage(String s) throws RemoteException {
System.out.println(s);
}
@Override
public String getMessage(String text) throws RemoteException {
return "Your message is: " + text;
}
public static void main(String[] args) {
Registry reg = null;
try {
reg = LocateRegistry.createRegistry(1099);
} catch (Exception e) {
System.out.println("ERROR: Could not create the registry.");
e.printStackTrace();
}
RMIServer serverObject = new RMIServer();
System.out.println("Waiting...");
try {
reg.rebind("server", (RMIInterface) UnicastRemoteObject.exportObject(serverObject, 0));
} catch (Exception e) {
System.out.println("ERROR: Failed to register the server object.");
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5485 次 |
| 最近记录: |