Blue框架的基本教程三:服务端调用客户端的方法
2007-10-14 12:14
489 查看
如蒙转载,请注明文章出处:www.sujun.org 作者:弃天笑
接下来是服务器呼叫客户端的方法,这里也只是简单的作个例子,具体的可以看源代码
下面是服务器呼叫客户端的代码StartAndEnd.java
这里是响应客户端连接的方法类,为了方便起见,我把服务器调用客户端的代码写在客户端连接成功后呼叫
,详细的看callClient(Client client)方法
import java.util.Map;
import java.util.HashMap;
import org.sujun.blue.remote.Client;
import org.sujun.blue.remote.FlashObject;
import org.sujun.blue.global.Application;
import org.sujun.blue.response.StartEndListenterAdapter;
public class StartAndEnd extends StartEndListenterAdapter
{
public void onConnet(Client client,String name, String pass)
{
if(name.equals("soda") && pass.equals("admin123"))
{
Application.setStart(true,"SUCCESS");
callClient(client);
}
else
{
Application.setStart(false,"FAIL");
}
System.out.println("用户连接程序完毕");
}
private void callClient(Client client)
{
System.out.println("开始呼叫客户端的方法");
//在这里呼叫客户端的一个对象的方法
FlashObject flash = new FlashObject();
//传送object过去
flash.put("info", "该用户登陆成功");
flash.put("msg", "测试数据");
flash.put("num", 15);
//传字符串数组过去
String[] strs = new String[3];
strs[0] = "my";
strs[1] = "name";
strs[2] = "soda";
//传数字数组过去
double[] number = new double[3];
number[0] = 11;
number[1] = 15;
number[2] = 21;
//传map过去
Map map = new HashMap();
Map map1 = new HashMap();
map1.put("name", "soda");
map1.put("age", "24");
Map map2 = new HashMap();
map2.put("address", "广州");
map2.put("main", "sujun10@21cn.com");
map.put("map1", map1);
map.put("map2", map2);
//呼叫客户端的默认方法
//client.call("clientMethod");
//呼叫客户端指定对象的一个方法
client.call("client","clientMethod");
client.setParam("soda");
client.setParam(23);
client.setParam(flash);
//client.setParam(strs);
client.setParam(number);
client.setParam(map);
client.send();
}
public void thunderboltCut(Client client)
{
System.out.println("服务器意外关闭时调用!没有参数的");
}
}
在callClient(Client client)方法了,主要是传送了Object,String,double,double[],Map等基本数据类型,同时在flash也是可以把这些数据类型传过来的。各为读者可以自己去验证一下
//呼叫客户端的默认方法
//client.call("clientMethod");
//呼叫客户端指定对象的一个方法
client.call("client","clientMethod");
client.setParam("soda");
client.setParam(23);
client.setParam(flash);
//client.setParam(strs);
client.setParam(number);
client.setParam(map);
client.send();
这里是发送参数的代码
client.call("client","clientMethod");这里指定了服务端的对象以及方法
client.setParam();方法是发送一个参数,顺序和参数类型必须和客户端方法一直
参数传完后,必须调用client.send();方法,才算完成远程调用
细心人会发现这个代码,//client.call("clientMethod");
恩,如果没有指定客户端的对象,默认是调用客户端连接类的方法的,即是ConnectJavaServer.as这个类的实例
////////////////////////////////下面是客户端的主代码///////////////////////
//支持自定义对象的方法被服务器调用
var clientObj:Object = new Object();
//注册到网络连接类里去
netConnect.addServerCall("client",clientObj);
clientObj.clientMethod = function(name:String,age:Number,obj:Object,arry:Array,map:Map)
{
trace("自定义对象");
trace("name:" + name);
trace("age:" + age);
trace("arry:" + arry);
trace("obj[info]:" + obj["info"]);
trace("obj[msg]:" + obj["msg"]);
trace("obj[num]:" + obj["num"]);
trace("map:" + map);
var map2:Map = map.get("map2");
trace("map2:" + map2);
trace("map2.get(address):" + map2.get("address"));
trace("map2.get(main):" + map2.get("main"));
}
运行输出结果是:
自定义对象
name:soda
age:23
arry:11,15,21
obj[info]:该用户登陆成功
obj[msg]:测试数据
obj[num]:15
map:[object Object]
map2:[object Object]
map2.get(address):广州
map2.get(main):sujun10@21cn.com
连接成功
num:100
源代码下载:代码
接下来是服务器呼叫客户端的方法,这里也只是简单的作个例子,具体的可以看源代码
下面是服务器呼叫客户端的代码StartAndEnd.java
这里是响应客户端连接的方法类,为了方便起见,我把服务器调用客户端的代码写在客户端连接成功后呼叫
,详细的看callClient(Client client)方法
import java.util.Map;
import java.util.HashMap;
import org.sujun.blue.remote.Client;
import org.sujun.blue.remote.FlashObject;
import org.sujun.blue.global.Application;
import org.sujun.blue.response.StartEndListenterAdapter;
public class StartAndEnd extends StartEndListenterAdapter
{
public void onConnet(Client client,String name, String pass)
{
if(name.equals("soda") && pass.equals("admin123"))
{
Application.setStart(true,"SUCCESS");
callClient(client);
}
else
{
Application.setStart(false,"FAIL");
}
System.out.println("用户连接程序完毕");
}
private void callClient(Client client)
{
System.out.println("开始呼叫客户端的方法");
//在这里呼叫客户端的一个对象的方法
FlashObject flash = new FlashObject();
//传送object过去
flash.put("info", "该用户登陆成功");
flash.put("msg", "测试数据");
flash.put("num", 15);
//传字符串数组过去
String[] strs = new String[3];
strs[0] = "my";
strs[1] = "name";
strs[2] = "soda";
//传数字数组过去
double[] number = new double[3];
number[0] = 11;
number[1] = 15;
number[2] = 21;
//传map过去
Map map = new HashMap();
Map map1 = new HashMap();
map1.put("name", "soda");
map1.put("age", "24");
Map map2 = new HashMap();
map2.put("address", "广州");
map2.put("main", "sujun10@21cn.com");
map.put("map1", map1);
map.put("map2", map2);
//呼叫客户端的默认方法
//client.call("clientMethod");
//呼叫客户端指定对象的一个方法
client.call("client","clientMethod");
client.setParam("soda");
client.setParam(23);
client.setParam(flash);
//client.setParam(strs);
client.setParam(number);
client.setParam(map);
client.send();
}
public void thunderboltCut(Client client)
{
System.out.println("服务器意外关闭时调用!没有参数的");
}
}
在callClient(Client client)方法了,主要是传送了Object,String,double,double[],Map等基本数据类型,同时在flash也是可以把这些数据类型传过来的。各为读者可以自己去验证一下
//呼叫客户端的默认方法
//client.call("clientMethod");
//呼叫客户端指定对象的一个方法
client.call("client","clientMethod");
client.setParam("soda");
client.setParam(23);
client.setParam(flash);
//client.setParam(strs);
client.setParam(number);
client.setParam(map);
client.send();
这里是发送参数的代码
client.call("client","clientMethod");这里指定了服务端的对象以及方法
client.setParam();方法是发送一个参数,顺序和参数类型必须和客户端方法一直
参数传完后,必须调用client.send();方法,才算完成远程调用
细心人会发现这个代码,//client.call("clientMethod");
恩,如果没有指定客户端的对象,默认是调用客户端连接类的方法的,即是ConnectJavaServer.as这个类的实例
////////////////////////////////下面是客户端的主代码///////////////////////
//支持自定义对象的方法被服务器调用
var clientObj:Object = new Object();
//注册到网络连接类里去
netConnect.addServerCall("client",clientObj);
clientObj.clientMethod = function(name:String,age:Number,obj:Object,arry:Array,map:Map)
{
trace("自定义对象");
trace("name:" + name);
trace("age:" + age);
trace("arry:" + arry);
trace("obj[info]:" + obj["info"]);
trace("obj[msg]:" + obj["msg"]);
trace("obj[num]:" + obj["num"]);
trace("map:" + map);
var map2:Map = map.get("map2");
trace("map2:" + map2);
trace("map2.get(address):" + map2.get("address"));
trace("map2.get(main):" + map2.get("main"));
}
运行输出结果是:
自定义对象
name:soda
age:23
arry:11,15,21
obj[info]:该用户登陆成功
obj[msg]:测试数据
obj[num]:15
map:[object Object]
map2:[object Object]
map2.get(address):广州
map2.get(main):sujun10@21cn.com
连接成功
num:100
源代码下载:代码
相关文章推荐
- Blue框架的基本教程二:客户端调用服务器的方法
- Android NDK开发系列教程2:基本方法调用及传参
- Android NDK开发系列教程3:基本方法调用及传参(续)
- SilverLight企业应用框架设计【五】客户端调用服务端(使用JSON传递数据,自己实现RESTful Web服务)
- Blue框架的基本教程一:连接服务器
- 使用AjaxPro.Net框架实现在客户端调用服务端的方法
- AJAX下客户端调用服务端页面方法
- datasnap 2010 客户端如何调用服务端上自定义的方法
- Python的Bottle框架中实现最基本的get和post的方法的教程
- Webservice客户端动态调用服务端功能方法
- 利用AjaxPro从客户端调用服务端函数的方法
- ASP.NET中,客户端利用 ASP.NET AJAX(Atlas)调用服务端方法的代码
- PostgreSQL数据库服务端监听设置及客户端连接方法教程
- MyEclipse根据WSDL文件生成WebService客户端并调用服务端方法
- AJAX下客户端调用服务端页面方法
- asp.net中ajax使用(客户端调用服务端方法)
- js调用父框架函数与弹窗调用父页面函数的方法_站长帮帮网-asp.net教程-flash as3教程
- 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq
- (图文教程)java 使用JAX-WS框架发布Webservice以及客户端调用
- 服务端调用javascript客户端事件的几种方法