Blue框架的基本教程二:客户端调用服务器的方法
Posted 弃天笑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Blue框架的基本教程二:客户端调用服务器的方法相关的知识,希望对你有一定的参考价值。
如蒙转载,请注明文章出处:
www.sujun.org 作者:
弃天笑
上篇说到客户端连接和端开连接,服务器有什么事件,那么我们先做就来看看客户端调用服务器上的方法
客户端连接服务器的代码这里就不在重复了,只说调用服务器的代码
定义个接受服务器返回结果的响应事件对象
var receice:Object = new Object();
//服务器返回结果时调用该方法
receice.onResult = function(num:Number)
{
trace("num:" + num);
}
//远程调用方法失败时响应该方法
receice.onFault = function(msg:String)
{
trace("fail:" + msg);
}
//呼叫服务器的方法
function callServerMethod()
{
//对象
var obj:Object = new Object();
obj.name = "objName";
obj.num = 50;
//数组
var ary:Array = [1,4,7,16,98,100];
//把参数发送到服务器上去,第一个为服务器上的一个类实例的标示
//第二参数是要调用的方法名,第三个是要接受服务器返回结果的对象
//往后就是要传到服务器的参数了,注意,参数类型顺序一定要和服务器方法的参数一致
netConnect.call("services","callParams",receice,"中文",23);
}
//注意,记得在连接服务器成功后。再调用这个callServerMethod()函数就可以了
接着再来看服务端的代码,首先是要被客户端调用的对象
ReceiveClientCall.java
public class ReceiveClientCall
{
public double callParams(String name, double age)
{
System.out.println("客户端传过来的name:" + name);
System.out.println("客户端传过来的age:" + age);
return 100;
}
}
很简单,就定义了一个callParams方法以及两个参数,对应客户端的
netConnect.call("services","callParams",receice,"中文",23);
接着就可以看控制台是否打印出客户端传过去的数据。
就这样写一个类就可以被客户端调用了吗?答案是不行的,我们还必须做一些事,那就是告诉服务器,有这么一个对象可以被客户端调用
那么看回MainFrame.java这个类的代码
比较一下之前,就可以发现多了一行代码
import org.sujun.blue.net.Server;
import org.sujun.blue.global.Application;
public class MainFrame
{
public static void main(String[] args)
{
//注册响应客户端连接和端开处理类
Application.addStartEndListenter(new StartAndEnd());
//注册被客户端调用的对象
Application.regeditClass("services", ReceiveClientCall.class);
Server ser = new Server();
//设置端口
ser.setPort(5588);
//启动服务
ser.startServer();
}
}
仔细一看,就是多了这行代码
//注册被客户端调用的对象
Application.regeditClass("services", ReceiveClientCall.class);
第一个参数是被该对象命个名,即是被客户端调用的称号,第二个就是一个Class对象啦
恩,做完这些步骤,就可以去运行服务器看效果啦
(其实我们还可以传对象,数组等等的)
源代码下载: [url=http://www.sujun.org/downfiles/blue/example.rar[/url]例子代码
上篇说到客户端连接和端开连接,服务器有什么事件,那么我们先做就来看看客户端调用服务器上的方法
客户端连接服务器的代码这里就不在重复了,只说调用服务器的代码
定义个接受服务器返回结果的响应事件对象
var receice:Object = new Object();
//服务器返回结果时调用该方法
receice.onResult = function(num:Number)
{
trace("num:" + num);
}
//远程调用方法失败时响应该方法
receice.onFault = function(msg:String)
{
trace("fail:" + msg);
}
//呼叫服务器的方法
function callServerMethod()
{
//对象
var obj:Object = new Object();
obj.name = "objName";
obj.num = 50;
//数组
var ary:Array = [1,4,7,16,98,100];
//把参数发送到服务器上去,第一个为服务器上的一个类实例的标示
//第二参数是要调用的方法名,第三个是要接受服务器返回结果的对象
//往后就是要传到服务器的参数了,注意,参数类型顺序一定要和服务器方法的参数一致
netConnect.call("services","callParams",receice,"中文",23);
}
//注意,记得在连接服务器成功后。再调用这个callServerMethod()函数就可以了
接着再来看服务端的代码,首先是要被客户端调用的对象
ReceiveClientCall.java
public class ReceiveClientCall
{
public double callParams(String name, double age)
{
System.out.println("客户端传过来的name:" + name);
System.out.println("客户端传过来的age:" + age);
return 100;
}
}
很简单,就定义了一个callParams方法以及两个参数,对应客户端的
netConnect.call("services","callParams",receice,"中文",23);
接着就可以看控制台是否打印出客户端传过去的数据。
就这样写一个类就可以被客户端调用了吗?答案是不行的,我们还必须做一些事,那就是告诉服务器,有这么一个对象可以被客户端调用
那么看回MainFrame.java这个类的代码
比较一下之前,就可以发现多了一行代码
import org.sujun.blue.net.Server;
import org.sujun.blue.global.Application;
public class MainFrame
{
public static void main(String[] args)
{
//注册响应客户端连接和端开处理类
Application.addStartEndListenter(new StartAndEnd());
//注册被客户端调用的对象
Application.regeditClass("services", ReceiveClientCall.class);
Server ser = new Server();
//设置端口
ser.setPort(5588);
//启动服务
ser.startServer();
}
}
仔细一看,就是多了这行代码
//注册被客户端调用的对象
Application.regeditClass("services", ReceiveClientCall.class);
第一个参数是被该对象命个名,即是被客户端调用的称号,第二个就是一个Class对象啦
恩,做完这些步骤,就可以去运行服务器看效果啦
(其实我们还可以传对象,数组等等的)
源代码下载: [url=http://www.sujun.org/downfiles/blue/example.rar[/url]例子代码
以上是关于Blue框架的基本教程二:客户端调用服务器的方法的主要内容,如果未能解决你的问题,请参考以下文章