先创建一个maven项目
具体请看头两篇博客
接口
创建一个hello.java的class
/**
* rpc中的协议
* @author msm
*
*/
public interface hello {
public static final long versionID = 1;
/**
* 协议
* @param words
* @return
*/
public String say(String words);
}
服务器
创建一个RPCServe.java的class
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.ipc.RPC.Server;
/**
* rpc中的server
* @author
*
*/
public class RPCServer implements hello {
public String say(String words) {
// TODO Auto-generated method stub
System.out.println(words);
//逻辑代码
return "recived datanode01 heartbeats!";
}
public static void main(String [] args){
try {
//获得一个服务
Server server = new RPC.Builder(new Configuration())
.setInstance(new RPCServer())
.setProtocol(hello.class)
.setBindAddress("127.0.0.1")
.setPort(6666)
.build();
//启动服务
server.start();
System.out.println("server is started......");
} catch (Exception e) {
// TODO: handle exception
}
}
}
客户端
创建RPCClient.java的class
import java.io.IOException;
import java.net.InetSocketAddress;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
/**
* rpc中的客户端
* @author
*
*/
public class RPCClient {
public static void main(String[] args) {
try {
while (true) {
hello hello = RPC.getProxy(hello.class, 1, new InetSocketAddress("127.0.0.1", 6666), new Configuration());
String res = hello.say("I am dataname01, I am live...");
System.out.println(res);
Thread.sleep(3000);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
依次运行服务器,客户端出现下图表示成功
服务器
客户端
完美