`
kofsky
  • 浏览: 196763 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

从xmlrpc++ 的Method中获取客户信息

阅读更多

 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源代码,解析xml

    xmlrpc++0.7源代码,带VC工程文件,方便对xml进行编码和解码。如: <member> <name>result</name> <value><i4>0</i4></value> <member> <name>desc</name> <value>Success</value> <member> <name>group...

    XmlRpc+Spring+Hibernate系统(源码)

    使用Spring+Hibernate实现XmlRpc项目, 本项目是实现呼叫系统, 源码在classes中, 测试客服端为SuperCallClient.java

    xmlrpc++0.7.zip

    xml-rpc 协议的实现代码和测试例子

    xmlrpcPP.zip_xmlrpc_zip

    XMLRPC++ Source Code

    XMLRPC jar包+教程+例子

    当初到处找XMLRPC的例子,jar包,和教程很难,现在我自己把这些东西都整理了一下,希望对各位有帮助。里面还有具体的例子。

    XmlRpcThd:轻量级的基于C ++的xmlrpc客户端-开源

    基于Chris Morley出色的著作“ XmlRpc ++”派生的XmlRpc库。 / *由ise GmbH 2013更改* /-添加了多线程支持-添加了对Windows编译的支持-扩展类XmlRpcValue用于某些定义的输入格式的自动类型识别-添加了二进制协议以...

    xml-rpc 1.5.1

    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实现设计

    面向嵌入式系统XML-RPC的C实现设计.pdf

    xmlrpc-2.0-src.zip_xmlrpc_xmlrpc java_xmlrpc s_xmlrpc-2.0.1.jar_

    xmlrpc-2.0-src.zip java程序,主要用语开发rpc

    xmlrpc3.1.3 jar包.

    xmlrpc jar包. 版本: 3.1.3

    xmlrpc类库

    xmlrpc库

    xmlrpc简单示例

    xmlrpc简单示例,详细介绍xmlrpc

    (java)xmlrpc.7z

    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文件

    xmlrpc.jar文件,Java调用xmlrpc时需要此jar包

    android-xmlrpc

    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示例

    基于python的xmlrpc示例,详细说明见https://blog.csdn.net/qq_25662827/article/details/123271255

    xmlRpc的完整例子

    上次我求一个xrpc的完整例子没有找到。现在从我自己做了一个,如果有使用ws、xmlrpc来做系统接口的同学,可以参考下

    php XmlRPC 官方文档

    php XmlRPC 官方文档 里面有详细的运用说明

    xmlrpc demo

    xmlrpc demo。包含服务端和客户端。入门的好例子。

    php的xmlrpc详细讲解与实例

    PHP中集成了XML-RPC和SOAP两种协议的访问,都是集中在xmlrpc扩展当中。另外,在PHP的PEAR中,不管是PHP 4还是PHP 5,都已经默认集成了XML-RPC扩展,而且该扩展跟xmlrpc扩展无关,能够独立实现XML-RPC的协议交互,...

Global site tag (gtag.js) - Google Analytics