xmlrpc++提供了一个很好的架构,服务器端方法只需要继承XmlRpcServerMethod,然后实现方法execute,就可以在服务器端新增方法(客户便可以在服务器端执行这个方法了)。非常的简单且方便。但其也有一个最大的问题,就是屏蔽了太多的细节。如果不修改这个库,你无法从外面获得更详细的信息,比如,当前已连接的客户数量,当前连接客户的信息,当前是哪个客户在请求方法等。当你需要这些信息时,便感到有些束手无策。
没有办法,只有修改库了。
需求:
在服务器端执行某方法时,需要知道,当前请求执行该方法的客户端socket信息。
修改部分如下:
1 新增类:SocketInfo,包含IP与端口,没有用系统提供的sockaddr_in
2 类XmlRpcSource 中新增SocketInfo属性,意味通讯对等端的socket信息
3 类XmlRpcServerMethod 中新增SocketInfo属性,保存当前执行该方法的客户端信息
4 方法:int XmlRpcSocket::accept(int fd),新增返回参数,返回客户socket信息SocketInfo
在 (int) ::accept(fd, (struct sockaddr*)&addr, &addrlen); 执行完毕后,将信息从addr中取出,并通过accept返回
5 方法:void XmlRpcServer::acceptConnection()
执行int s = XmlRpcSocket::accept(this->getfd())替换为修改后的accept,将SocketInfo取出
_disp.addSource之前,将该SocketInfo添加到新建的XmlRpcServerConnection*中
6 方法:bool XmlRpcServerConnection::executeMethod(const std::string& methodName,
XmlRpcValue& params, XmlRpcValue& result) 在真正执行方法(也就是method->execute(params, result))之前,将类XmlRpcServerConnection对应的客户端信息SocketInfo设置到需要执行的方法method的SocketInfo中。
OK. 每次在服务器端执行方法的时候,都可以获取请求该方法的客户端IP与端口信息。
分享到:
相关推荐
xmlrpc++0.7源代码,带VC工程文件,方便对xml进行编码和解码。如: <member> <name>result</name> <value><i4>0</i4></value> <member> <name>desc</name> <value>Success</value> <member> <name>group...
使用Spring+Hibernate实现XmlRpc项目, 本项目是实现呼叫系统, 源码在classes中, 测试客服端为SuperCallClient.java
xml-rpc 协议的实现代码和测试例子
XMLRPC++ Source Code
当初到处找XMLRPC的例子,jar包,和教程很难,现在我自己把这些东西都整理了一下,希望对各位有帮助。里面还有具体的例子。
基于Chris Morley出色的著作“ XmlRpc ++”派生的XmlRpc库。 / *由ise GmbH 2013更改* /-添加了多线程支持-添加了对Windows编译的支持-扩展类XmlRpcValue用于某些定义的输入格式的自动类型识别-添加了二进制协议以...
The automatic base64 encoding can be turned on via the new XML_RPC_Client::setAutoBase64() method. The auto-encoding is a workaround for systems that don't have PHP's mbstring extension ...
面向嵌入式系统XML-RPC的C实现设计.pdf
xmlrpc-2.0-src.zip java程序,主要用语开发rpc
xmlrpc jar包. 版本: 3.1.3
xmlrpc库
xmlrpc简单示例,详细介绍xmlrpc
static String serverUrl = "http://192.168.1.6:81/phacoa/xmlrpc"; static String usr = ""//帐号 static String pwd = ""; //密码 public static <JSONObject> Object RPC(String methodName, List<String> L...
xmlrpc.jar文件,Java调用xmlrpc时需要此jar包
android xmlrpc Sub Activity_Create(FirstTime As Boolean) If FirstTime Then XMLRPC1.Initialize("XMLRPC1") End If Activity.AddMenuItem("initXMLRPC","mnuXMLRPC") Activity.AddMenuItem("Call Method",...
基于python的xmlrpc示例,详细说明见https://blog.csdn.net/qq_25662827/article/details/123271255
上次我求一个xrpc的完整例子没有找到。现在从我自己做了一个,如果有使用ws、xmlrpc来做系统接口的同学,可以参考下
php XmlRPC 官方文档 里面有详细的运用说明
xmlrpc demo。包含服务端和客户端。入门的好例子。
PHP中集成了XML-RPC和SOAP两种协议的访问,都是集中在xmlrpc扩展当中。另外,在PHP的PEAR中,不管是PHP 4还是PHP 5,都已经默认集成了XML-RPC扩展,而且该扩展跟xmlrpc扩展无关,能够独立实现XML-RPC的协议交互,...