php server

  1. <?php
  2. require_once('src/Hprose.php');
  3. function hello($name) {
  4. echo "Hello $name!";
  5. return "Hello $name!";
  6. }
  7. function e() {
  8. throw new Exception("I am Exception");
  9. }
  10. function ee() {
  11. require("andot");
  12. }
  13. function asyncHello($name, $callback) {
  14. sleep(3);
  15. $callback("from server,Hello async $name!");
  16. }
  17. $server = new HproseHttpServer();
  18. $server->setErrorTypes(E_ALL);
  19. $server->setDebugEnabled();
  20. $server->addFunction('hello');
  21. $server->addFunctions(array('e', 'ee'));
  22. $server->addAsyncFunction('asyncHello');
  23. $server->addFilter(new HproseJSONRPCServiceFilter());
  24. $server->start();

php client

  1. <?php
  2. require_once ('src/Hprose.php');
  3. $test = new HproseHttpClient("http://localhost/hprose/http_server.php");
  4. echo '<br/>';
  5. // var_dump($test->invoke("hello", $args, 0, HproseResultMode::Serialized, 0));
  6. echo '<br/>';
  7. // var_dump($test->invoke("hello", $args, 0, HproseResultMode::Raw, 0));
  8. echo '<br/>';
  9. // var_dump($test->invoke("hello", $args, 0, HproseResultMode::RawWithEndTag, 0));
  10. echo $test->asyncHello("WORLD");
  11. echo '<br/>';
  12. $test->asyncHello("WORLD", function ($result)
  13. {
  14. echo "from client result: ";
  15. var_dump($result);
  16. });
  17. echo '<br/>';
  18. /*
  19. $test->dnslookup("www.baidu.com", function($result, $args) {
  20. echo "result: ";
  21. var_dump($result);
  22. echo "args: ";
  23. var_dump($args);
  24. });
  25. */
  26. ?>

java client

  1. package hprose.hello.client;
  2. import hprose.client.HproseHttpClient;
  3. import java.io.IOException;
  4. public class HelloClient {
  5. public static void main(String[] args) throws IOException {
  6. HproseHttpClient client = new HproseHttpClient();
  7. client.useService("http://10.0.0.100:9090/hprose_demo/Hello");
  8. String result = (String) client.invoke("sayHello", new Object[] { "Hprose" });
  9. System.out.println(result);
  10. result = (String) client.invoke("sayHello", new Object[] { "中国" });
  11. System.out.println(result);
  12. System.out.println(client.invoke("add",new Object[]{115,316}));
  13. }
  14. }
  1. package hprose.hello.client;
  2. import java.io.IOException;
  3. import hprose.client.HproseHttpClient;
  4. public class TestPHPClient {
  5. public static void main(String[] args) throws Exception {
  6. HproseHttpClient client = new HproseHttpClient();
  7. client.useService("http://10.0.0.105/hprose/http_server.php");
  8. String result = (String) client.invoke("hello",
  9. new Object[] { "Hprose来自Java客户端" });
  10. System.out.println(result);
  11. System.out.println(client.invoke("asyncHello",new Object[] { "Hprose来自Java客户端"}));
  12. }
  13. }

delphi client:

  1. unit Unit4;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5. Dialogs, StdCtrls, HproseHttpClient, HproseClient;
  6. type
  7. TForm4 = class(TForm)
  8. Button1: TButton;
  9. HproseHttpClient1: THproseHttpClient;
  10. Button2: TButton;
  11. procedure Button1Click(Sender: TObject);
  12. procedure Button2Click(Sender: TObject);
  13. private
  14. { Private declarations }
  15. public
  16. { Public declarations }
  17. end;
  18. var
  19. Form4: TForm4;
  20. implementation
  21. {$R *.dfm}
  22. procedure TForm4.Button1Click(Sender: TObject);
  23. begin
  24. HproseHttpClient1.UseService('http://10.0.0.100:9090/hprose_demo/Hello');
  25. ShowMessage(HproseHttpClient1.Invoke('sayHello', ['World中文']));
  26. ShowMessage(HproseHttpClient1.Invoke('add', [15,63]));
  27. end;
  28. //https://raw.githubusercontent.com/andot/hprose/master/doc/1.3/docx/pascal.docx
  29. procedure TForm4.Button2Click(Sender: TObject);
  30. begin
  31. HproseHttpClient1.UseService('http://10.0.0.105/hprose/http_server.php');
  32. ShowMessage(HproseHttpClient1.Invoke('hello', ['World时间']));
  33. ShowMessage(HproseHttpClient1.Invoke('asyncHello', ['xxx']));
  34. end;
  35. end.

源码工程:http://pan.baidu.com/s/1o6vF1qE

http://blog.csdn.net/earbao/article/details/46501671

hprose rpc使用实例(同时有Java和Delphi客户端的例子)的更多相关文章

  1. phprpc 使用实例(同时有Java、Android和Delphi客户端的例子)

    PHPRPC 是一个轻型的.安全的.跨网际的.跨语言的.跨平台的.跨环境的.跨域的.支持复杂对象传输的.支持引用参数传递的.支持内容输出重定向的.支持分级错误处理的.支持会话的.面向服务的高性能远程过 ...

  2. 3 weekend110的hadoop中的RPC框架实现机制 + hadoop中的RPC应用实例demo

    hadoop中的RPC框架实现机制 RPC是Remotr Process Call, 进程间的远程过程调用,不是在一个jvm里. 即,Controller拿不到Service的实例对象. hadoop ...

  3. 性能工具之Jmeter压测Hprose RPC服务

    概述 Hprose(High Performance Remote Object Service Engine),国人开发的一个远程方法调用的开源框架.它是一个先进的轻量级的跨语言跨平台面向对象的高性 ...

  4. 梯度迭代树(GBDT)算法原理及Spark MLlib调用实例(Scala/Java/python)

    梯度迭代树(GBDT)算法原理及Spark MLlib调用实例(Scala/Java/python) http://blog.csdn.net/liulingyuan6/article/details ...

  5. Java-Runoob-高级教程-实例-环境设置实例:4.Java 实例 – 如何查看当前 Java 运行的版本?

    ylbtech-Java-Runoob-高级教程-实例-环境设置实例:4.Java 实例 – 如何查看当前 Java 运行的版本? 1.返回顶部 1. Java 实例 - 如何查看当前 Java 运行 ...

  6. Java-Runoob-高级教程-实例-环境设置实例:3.Java 实例 - 如何执行指定class文件目录(classpath)?

    ylbtech-Java-Runoob-高级教程-实例-环境设置实例:3.Java 实例 - 如何执行指定class文件目录(classpath)? 1.返回顶部 1. Java 实例 - 如何执行指 ...

  7. Java-Runoob-高级教程-实例-环境设置实例:2.Java 实例 – Java 如何运行一个编译过的类文件?

    ylbtech-Java-Runoob-高级教程-实例-环境设置实例:2.Java 实例 – Java 如何运行一个编译过的类文件? 1.返回顶部 1. Java 实例 - 如何执行编译过 Java ...

  8. Java-Runoob-高级教程-实例-环境设置实例:1.Java 实例 – 如何编译一个Java 文件?

    ylbtech-Java-Runoob-高级教程-实例-环境设置实例:1.Java 实例 – 如何编译一个Java 文件? 1.返回顶部 1. Java 实例 - 如何编译 Java 文件  Java ...

  9. 实例详解 Java 死锁与破解死锁

    锁和被保护资源之间的关系 我们把一段需要互斥执行的代码称为临界区.线程在进入临界区之前,首先尝试加锁 lock(),如果成功,则进入临界区,此时我们称这个线程持有锁:否则呢就等待,直到持有锁的线程解锁 ...

随机推荐

  1. 基于visual Studio2013解决算法导论之004随机排列数组

     题目 随机排列数组 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> # ...

  2. SQL多个表实现联合查询

    select LineId,Id,Country from Domestic union allselect LineId,Id,Country from Freedom-- 联合查询Domestic ...

  3. HTTP 错误 500.19 – Internal Server Error web.config 文件的 system.webServer/httpErrors 节中不允许绝对物理路径“C:\inetpub\custerr”[转]

    给ASP或者ASP.NET等需要配置IIS服务器的过程中,很可能会遇到以下两种错误.尤其是用Win7系统的,配置IIS7.0版本比用XP系统配置IIS5.1版本而言要复杂复杂一些.当同时需要配置ASP ...

  4. NSUserDefaults设置bool值重新启动后bool仅仅设置丢失问题

    今天使用NSUserDefaults保存bool至重新启动后发现bool值没有保存对 NSUserDefaults *ud = [NSUserDefaults standardUserDefaults ...

  5. eclipse不能自己主动弹出提示的解决的方法

    曾经碰到过好几次eclipse不能自己主动弹出提示的情况,每次总是弄好之后就不再管它,结果下次遇到同样的问题,又到网上去搜索一大堆答案非常多都不能解决实际问题,费了时间还没有效果,如今这里记录下来下面 ...

  6. C#、WinForm、ASP.NET - Md5散列加密

     MD5值概念解释: 转载自:http://free0007.iteye.com/blog/2047163 所 谓MD5,即"Message-Digest Algorithm 5(信息-摘要 ...

  7. WinFrom - DataGridView控件右键选中记录并弹出菜单

    dataGridView右键菜单并选中该行 程序代码: private void dataGridView1_CellMouseDown(object sender, DataGridViewCell ...

  8. 重操JS旧业第九弹:函数表达式

    函数表达式,什么概念,表达式中的函数表达式. 1 函数申明 function 函数名([函数参数]){ //函数体 } js中无论像这样的显示函数什么放在调用之前还是调用之后,都不影响使用,因为js解 ...

  9. vc怎么去掉烦人的“驱动器未准备好”错误

    在我们写程序的时候,如果访问一个软驱中没有软盘或者光驱中没有cd的时候,windows总是弹出一个恼人的错误框说“驱动器未准备好” 其实我们可以通过如下的步骤禁止这个错误框的弹出 一.用SetErro ...

  10. SpringMVC返回json数据的三种方式

    1.第一种方式是spring2时代的产物,也就是每个json视图controller配置一个Jsoniew. 如:<bean id="defaultJsonView" cla ...