您的位置:首页 > 编程语言 > Java开发

Java实现一个简单的RPC框架(二) 协议

2016-12-13 22:11 901 查看

参考:

crylearner专栏  一个简单的RPC框架是如何炼成的 :http://blog.csdn.net/crylearner/article/details/46898537

上面我们已经实现了简单的本地功能调用,接下来我们来为调用的双方定一个简单的协议,

例如,这里我的调用方发出的RPC请求:包含一个请求id和一个请求command,如id为1,command为‘sayHello’。

被调用者返回的response对应的是command的操作结果。

Java代码实现:

/**
* 订协议
* 这里RPC请求:包含一个请求id和一个请求命令,如‘sayHello’
* 返回:对应请求command的操作结果
* @author xchen
*
*/
public class Test2 {
public static void main(String[] args) {
mServer server = new mServer();
mClient client = new mClient();
client.remote=server;
System.out.println(client.sayHello());
}
}
class mRequest
{
int id;
String command;

//	String getRequest()
//	{
//		return "id: "+id+ " command: "+command;
//	}
}
class mResponse
{
int id;
String result;

//	String getResponse()
//	{
//		return "id: "+id+" result: "+result;
//	}
}
class mClient
{
mServer remote;
mRequest req = new mRequest();
mResponse rsp = new mResponse();

void setReqId(int id)
{
req.id=id;
}
void setReqCommand(String command)
{
req.command=command;
}
mClient()
{
remote = null;
}

String getRsp(mRequest req)
{
rsp = remote.procRequest(req);
return rsp.result;
}
String sayHello()
{
req.id=1;
req.command="sayHello";
return getRsp(req);
}
}

//
class mServer
{
//	Server解析收到的Request报文(报文由id和command组成)
//	将回复报文id设置为收到的报文一致
//	如果command为sayHello,那么范围的报文内容为Hello
//	如果为其他命令,我们暂时没有设定,所有输出无法解析提示消息unknown command
mResponse procRequest(mRequest req)
{
//return "Hello World";
mResponse rsp = new mResponse();
rsp.id = req.id;
if(req.command == "sayHello")
{
rsp.result = "Hello";
}else
{
rsp.result = "unknown command";
}
return rap;
}
}
//没有实现带参数的函数处理

运行一下!



在这个约定的协议下,双方可以解析对方的参数,并月
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: