从xmlrpc++ 的Method中获取客户信息
来源:互联网 发布:mac pro 型号 编辑:程序博客网 时间:2024/05/21 19:32
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++ 的Method中获取客户信息
- java中xmlrpc的使用
- 客户信息获取
- 获取客户信息SQL
- 从Class中获取信息
- ADO.Net:从DataReader中获取数据表的Schema信息
- 从网页中获取有用的信息 html2text
- oracle从控制文件中获取信息的数据字典
- 从yarn中获取mapreduce job信息的api
- 从XML文件中获取格式化的文本信息
- freemarker的DatabaseTemplateLoader从数据库中获取模板信息
- 从砸壳后的ipa中获取头文件信息
- jsp调用getParameter获取客户提交的信息
- jsp-创建及获取客户的会话信息
- python xmlrpc中遇到的问题
- 如果客户机器无法从DHCP服务器中获取IP地址那么Windows Server 2003客户机器将会如何处理自己的TCP/IP设置
- 从mp3音频文件中获取歌曲信息
- 从资源管理器窗口中获取信息
- AJAX框架资源汇总
- 数据仓库——在“啤酒与尿布”中挖掘
- 今天的成果(excel报表):200多倍的生成效率
- [转] 通过 PHP 和 Sajax 使用 Ajax(二)
- 技术英雄会【三】:社区英雄们的与会感言大赏
- 从xmlrpc++ 的Method中获取客户信息
- eclipse 加注释
- Windows API一日一练(61)GetDriveType函数
- XOOPS - 安装
- 利用存儲過程進行簡繁體轉換
- 如何构建银行数据仓库
- 技术英雄会【二】:问CSDN一个信息过滤器的问题
- GPS网络时间同步服务器
- jsf自定义toolbar组件