flex socket.writeObject()发送对象,java接收flex socket发送过来的对象
2013-12-29 11:49
501 查看
参考文章:
//java与as3,amf交互相互解析vo数据例子
http://www.cnblogs.com/pelephone/archive/2012/04/03/java-as3-amf-vo.html
http://hi.baidu.com/w542676619/item/6f5aedd980e2703b48e1dd82 //Amf3数据格式
http://d2100.com/questions/39379 //flex 和 java 序列化的对象使用的套接字通信
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
本篇文章要解决的问题是:
flex socket发送as对象到java服务器端,服务器端如何接收、解析flex socket发送过来的as对象呢?
我的解决方法:
在服务器端使用AMF3来解析flex socket发送过来的as对象。
注:java使用AMF3需要用到以下两个jar包:
flex-messaging-common.jar http://download.csdn.net/detail/friendan/6782955
flex-messaging-core.jar http://download.csdn.net/detail/friendan/6782957
以上两个jar包可以从BlazeDS中提取出来,然后放到java工程里面即可。
BlazeDS下载地址:http://download.csdn.net/detail/friendan/6782947
截图如下:
-------------------------------------------------------------------------------------------------------------------------------------------------------------
准备好以上说的两个jar包后,就可以开始java服务器端的编程了。
java服务器端的VO类如下:
java服务器端的socket监听类如下:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
接下来就是java服务器端最重要的socket线程函数编写了,这里我将socket线程函数封装在了一个类SocketThread中,
在socket线程函数中,我们使用AMF3来解析flex socket发送过来的对象,具体代码如下:
以上就是java服务器端的主要代码了,接下来我们编写flex客户端的代码。
flex客户端的vo类代码如下:
在flex的mxml文件中导入要用到的包:
import flash.events.*;
import flash.net.Socket;
import flash.net.registerClassAlias;
import mx.controls.Alert;
import mx.events.FlexEvent;
import mx.managers.PopUpManager;
import vo.User;
然后创建flex的socket对象:
var socket:flash.net.Socket=new flash.net.Socket();
截图如下:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
flex客户端主要代码如下:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
到这里,java服务器端和flex客户端的主要代码就写好了,先启动服务器socket,
然后运行flex客户端程序,就可以进行测试了,我测试的结果截图如下:
//flex socket连接服务器成功。
//服务器成功接收flex socket发送过来的对象。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
您的十分满意是我追求的宗旨。
您的一点建议是我后续的动力。
//java与as3,amf交互相互解析vo数据例子
http://www.cnblogs.com/pelephone/archive/2012/04/03/java-as3-amf-vo.html
http://hi.baidu.com/w542676619/item/6f5aedd980e2703b48e1dd82 //Amf3数据格式
http://d2100.com/questions/39379 //flex 和 java 序列化的对象使用的套接字通信
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
本篇文章要解决的问题是:
flex socket发送as对象到java服务器端,服务器端如何接收、解析flex socket发送过来的as对象呢?
我的解决方法:
在服务器端使用AMF3来解析flex socket发送过来的as对象。
注:java使用AMF3需要用到以下两个jar包:
flex-messaging-common.jar http://download.csdn.net/detail/friendan/6782955
flex-messaging-core.jar http://download.csdn.net/detail/friendan/6782957
以上两个jar包可以从BlazeDS中提取出来,然后放到java工程里面即可。
BlazeDS下载地址:http://download.csdn.net/detail/friendan/6782947
截图如下:
-------------------------------------------------------------------------------------------------------------------------------------------------------------
准备好以上说的两个jar包后,就可以开始java服务器端的编程了。
java服务器端的VO类如下:
package socket; //vo对象所在的包 import java.io.Serializable;//导入接口 //因为类要在网络上传输,所以必须序列化,即实现Serializable接口 //注意类User的全名为socket.User,即包名.类名 public class User implements Serializable{ int id; String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
java服务器端的socket监听类如下:
package socket; import java.io.*; import java.net.*; import java.util.*; public class Server { //启动服务器Socket public static void StartServer() { try { ServerSocket server = new ServerSocket(10000); System.out.println("服务器启动成功,正在监听客户端连接!..."); while (true) { Socket socket = server.accept(); System.out.println("有客户端连接..."); SocketThread st=new SocketThread(socket); st.run(); } } catch (IOException e) { e.printStackTrace(); } } }
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
接下来就是java服务器端最重要的socket线程函数编写了,这里我将socket线程函数封装在了一个类SocketThread中,
在socket线程函数中,我们使用AMF3来解析flex socket发送过来的对象,具体代码如下:
package socket; import java.io.*; import java.net.*; import flex.messaging.io.SerializationContext; //导入AMF3用到的包 import flex.messaging.io.amf.Amf3Output;//导入AMF3用到的包 import flex.messaging.io.amf.Amf3Input;//导入AMF3用到的包 public class SocketThread implements Runnable{ Socket client=null; public SocketThread(Socket client){//构造函数 this.client=client; } public void run(){ //线程函数 try { System.out.println("Socket线程函数正在运行!..."); SerializationContext sercontext=new SerializationContext(); //序列化 Amf3Input amf3input=new Amf3Input(sercontext);//创建AMF3对象 amf3input.setInputStream(client.getInputStream());//获取AMF3输入流 while(true){ User user=(User)amf3input.readObject();//AMF3读取flex发送过来的as对象 System.out.println(user.getId()+" "+user.getName()); } } catch (Exception e) {e.printStackTrace();} finally { try { System.out.println("客户端断开连接!..."); if(client!=null) client.close(); } catch (Exception e) {} } } }---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以上就是java服务器端的主要代码了,接下来我们编写flex客户端的代码。
flex客户端的vo类代码如下:
package vo { [Binable] [RemoteClass(alias="socket.User")]//注意:这里要与服务器端的VO类对应 public class User { public var id:int; public var name:String; } }---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在flex的mxml文件中导入要用到的包:
import flash.events.*;
import flash.net.Socket;
import flash.net.registerClassAlias;
import mx.controls.Alert;
import mx.events.FlexEvent;
import mx.managers.PopUpManager;
import vo.User;
然后创建flex的socket对象:
var socket:flash.net.Socket=new flash.net.Socket();
截图如下:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
flex客户端主要代码如下:
//连接服务器 protected function btnConnSrv_clickHandler(event:MouseEvent):void { socket.addEventListener(Event.CONNECT,onConnection); socket.addEventListener(Event.CLOSE,onConnectionClose); socket.addEventListener(ProgressEvent.SOCKET_DATA,onHaveData); socket.connect("127.0.0.1",10000); } //成功连接服务器事件 protected function onConnection(event:Event):void { var user:User=new User(); user.id=123; user.name="Ando"; socket.writeObject(user);//flex socket写入对象 socket.flush();//马上发送数据,即发送对象 Alert.show("连接成功,数据发送完毕!"); } //连接服务器关闭事件 protected function onConnectionClose(event:Event):void { Alert.show("连接关闭!"); } //服务器发数据过来事件 protected function onHaveData(event:Event):void { Alert.show("有数据到来"); }
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
到这里,java服务器端和flex客户端的主要代码就写好了,先启动服务器socket,
然后运行flex客户端程序,就可以进行测试了,我测试的结果截图如下:
//flex socket连接服务器成功。
//服务器成功接收flex socket发送过来的对象。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
您的十分满意是我追求的宗旨。
您的一点建议是我后续的动力。
相关文章推荐
- flex socket.readObject() //flex读取java服务器端发送过来的对象
- flex 和java通信,mxml页面用自定义实体对象接收
- Android进步之十四:使用jackon的ObjectMapper的writeValueAsString方法可以把java对象转化成json字符串
- Java 小例子:通过 Socket 发送和接收文件
- 学习WebSocket(三) — 发送和接收Java对象
- Java 小例子:通过 Socket 发送和接收文件
- 【问题-java-json】josn的发送与接收(全)解析json对象与字符串在js中的区别,以及后端spring该如何接收?
- Java Socket发送与接收HTTP消息简单实现
- java中使用DatagramSocket在线发送对象
- JAVA Socket传输Object(对象)注意的问题
- java中socket发送数据接收数据(udp)
- JAVA对象流序列化时的readObject,writeObject,readResolve是怎么被调用的
- Flex一个RemoteObject调用JAVA对象里面的多个方法(转)
- Java Socket发送与接收HTTP消息简单实现
- Java实现Socket发送和接收文件
- Java实现Socket发送和接收文件的代码(java 粘包个人联系)
- 利用java Socket发送,接收文件.
- Java网络编程(13):使用Socket类接收和发送数据
- Java中通过TCP协议发送和接收数据-Socket编程
- Java 小例子:通过 Socket 发送和接收文件