- 浏览: 138416 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
yaoweinan:
没有.....
Itext 5.4.0 生成PDF中文不报错,Adobe 不显示 -
马文涛:
我也发现这个问题了,你找到解决办法了吗?
Itext 5.4.0 生成PDF中文不报错,Adobe 不显示 -
coding1688:
博主辛苦了,也可以参考一下这篇文章:四步轻松搞定瀑布流布局ht ...
瀑布流布局个人实现 -
yaoweinan:
嘿嘿,那个只是最笨的办法,实际上是不行的,现在一般的都有sw ...
文件上传(无刷新,带进度条,带网速)下载完整 -
javazzu:
我为啥不行呢
文件上传(无刷新,带进度条,带网速)下载完整
首先解决的问题是flex的沙箱问题,由于flex 连接服务器存在此问题总是会连接两次服务,首先贴出as文件
package as3.email { import flash.errors.IOError; import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.ProgressEvent; import flash.events.SecurityErrorEvent; import flash.net.Socket; import mx.controls.Alert; public class EmailReceiveSocket extends Socket { private var receiveHandler:Function; private var closedHandler:Function; public function EmailReceiveSocket() { super(); configureListeners(); } public function connectServer(host:String,port:int,token:String,connectHandler:Function,receiveHandler:Function,closedHandler:Function):void{ super.addEventListener(Event.CONNECT, connectHandler); this.closedHandler=closeHandler; this.receiveHandler=receiveHandler; if (host && port) { super.connect(host, port); } } private function configureListeners():void { addEventListener(Event.CLOSE, closeHandler); addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler); } public function writeln(str:String):void { str += "\n"; try { super.writeUTF(str); super.flush(); } catch(e:IOError) { Alert.show(e.message); } } private function readResponse():void { while(super.bytesAvailable) { this.receiveHandler(super.readMultiByte(super.bytesAvailable,"utf8")); } } private function closeHandler(event:Event):void { this.closedHandler(); } private function ioErrorHandler(event:IOErrorEvent):void { Alert.show("ioErrorHandler: " + event); } private function securityErrorHandler(event:SecurityErrorEvent):void { Alert.show("securityErrorHandler: " + event); } private function socketDataHandler(event:ProgressEvent):void { readResponse(); } } }
调用
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init(event)"> <mx:states> <mx:State name="login_success" id="login_success"> <mx:RemoveChild target="{login}"/> <mx:AddChild position="lastChild"> <mx:Label x="116" y="9" width="682" id="msg"/> </mx:AddChild> <mx:AddChild position="lastChild"> <mx:Button x="88" y="8" width="20" height="20" label="连接状态" fillColors="[red, red]" cornerRadius="30" id="cur_state"/> </mx:AddChild> <mx:AddChild position="lastChild"> <mx:DataGrid x="10" y="35" width="710" height="405" id="grid"> <mx:columns> <mx:DataGridColumn headerText="编号" dataField="id" width="50" textAlign="center"/> <mx:DataGridColumn headerText="标题" dataField="text"/> </mx:columns> </mx:DataGrid> </mx:AddChild> <mx:AddChild position="lastChild"> <mx:Button x="10" y="8" label="连接服务" click="connect(event)" id="conn"/> </mx:AddChild> <mx:AddChild position="lastChild"> <mx:Button x="752" y="418" label="发送" click="send(event)"/> </mx:AddChild> <mx:AddChild position="lastChild"> <mx:TextInput x="726" y="366" id="context"/> </mx:AddChild> </mx:State> </mx:states> <mx:Style source="css/email.css"></mx:Style> <mx:Panel width="327" height="238" layout="absolute" titleStyleName="loginPanelTitle" title="邮箱登录" id="login" right="60" verticalCenter="20" styleName="loginPanel"> <mx:Button x="125.5" y="141" label="login" click="loginAction(event)"/> <mx:Button x="194.5" y="140" label="reset"/> <mx:ComboBox x="91.5" y="30" editable="false" id="service_select" render="service_select_render(data)" width="180"></mx:ComboBox> <mx:TextInput id="username" x="91.5" y="61" width="180" focusIn="clearStyles(event)"/> <mx:TextInput id="password" x="91.5" y="91" displayAsPassword="true" width="180" focusIn="clearStyles(event)"/> <mx:Text x="27.5" y="33" text="邮箱类型"/> <mx:Text x="47.5" y="63" text="账号"/> <mx:Text x="47.5" y="93" text="密码"/> </mx:Panel> <mx:Script> <![CDATA[ import flash.utils.setInterval; import as3.email.EmailReceiveSocket; import mx.rpc.AsyncToken; import mx.rpc.events.ResultEvent; import mx.core.UITextField; import com.google.maps.Color; import com.adobe.serialization.json.JSON; import mx.controls.Alert; import mx.collections.ArrayCollection; import mx.rpc.http.mxml.HTTPService; private var httpServer:HTTPService=new HTTPService(); private var userconfig:Object; private var socket:EmailReceiveSocket=new EmailReceiveSocket(); private var dataArr:ArrayCollection=new ArrayCollection(); private var i:int=1; private function init(evet):void{ var flexRequest:URLRequest=new URLRequest("../email/listRemoteService.do"); var flexload:URLLoader=new URLLoader(); flexload.load(flexRequest); flexload.addEventListener(Event.COMPLETE, function(e:Event):void{ var result=JSON.decode(e.target.data.toString(),true); if(result.success){ var data:Array=result.data; for each(var d:Object in data){ d.label=d.name; } service_select.dataProvider=data; }else{ } }); } private function service_select_render(data:Object):String{ return data.name; } private function loginAction(e):void{ if(username.text.length==0){ username.setStyle("borderColor",Color.RED); return; } if(password.text.length==0){ password.setStyle("borderColor",Color.RED); return; } httpServer.method="POST"; httpServer.url="../system/user/login.do"; var params:Object={}; params.username=username.text; params.password=username.text; params.pop3=service_select.selectedItem.pop3; params.smtp=service_select.selectedItem.smtp; httpServer.addEventListener(ResultEvent.RESULT,loginResult); httpServer.send(params); } private function loginResult(e:ResultEvent):void{ var rst=JSON.decode(e.result.toString(),true); if(rst.success){ userconfig=rst.data; this.currentState="login_success"; }else{ Alert.show(rst.result_msg); } }; private function clearStyles(event:Event):void{ event.currentTarget.setStyle("borderColor",Color.GRAY9); } private function send(e:Event):void{ var message:ByteArray=new ByteArray(); message.writeUTFBytes(this.context.text +"\n"); socket.writeBytes(message); socket.flush(); } private function connect(e:Event):void{ socket.connectServer("192.168.1.254",2567,"",connectHandler,receiveHandler,closedHandler); } private function receiveHandler(data:Object):void{ var obj:Object=new Object(); obj.id=i+""; obj.text=data.toString(); dataArr.addItem(obj); i++; } private function closedHandler():void{ this.cur_state.setStyle("fillColors",[Color.RED]); this.conn.enabled=true; } private function connectHandler(event:Event):void { this.conn.enabled=false; this.cur_state.setStyle("fillColors",[Color.GREEN]); socket.writeln("hello"); socket.flush(); socket.writeln("hello"); socket.flush(); var message:ByteArray=new ByteArray(); message.writeUTFBytes("start" +"\n"); socket.writeBytes(message); socket.flush(); grid.dataProvider=dataArr; } ]]> </mx:Script> </mx:Application>
在java服务端做出如下处理:
package com.lyon.yao.CMessage.email.service.impl; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.net.SocketException; import java.util.HashMap; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.lyon.yao.CMessage.email.entry.EmailUser; import com.lyon.yao.CMessage.email.service.IEMailBasicCongfigService; import com.lyon.yao.CMessage.email.service.ISocketService; import com.sun.xml.internal.messaging.saaj.util.ByteInputStream; /** * @author lyon.yao * @date Dec 23, 2011 * @function 邮件socket 服务器 实现 */ @Service public class SocketServiceImpl implements ISocketService, Runnable{ @Autowired private IEMailBasicCongfigService config; private ServerSocket serverSocket=null; public static HashMap<String,EmailUser> users=new HashMap<String, EmailUser>(0); private Thread service=new Thread(this); private String xml; public SocketServiceImpl() { super(); xml="<?xml version=\"1.0\"?>" + "<!DOCTYPE cross-domain-policy SYSTEM \"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd\">" + "<cross-domain-policy>" + "<allow-access-from domain=\"*\" to-ports=\"*\" />" + "</cross-domain-policy>"; // TODO Auto-generated constructor stub } public void start() throws Exception { // TODO Auto-generated method stub try { serverSocket=new ServerSocket(config.getServicesConfig().getPort()); service.start(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void stop() throws Exception { // TODO Auto-generated method stub service.stop(); } @Override protected void finalize() throws Throwable { // TODO Auto-generated method stub if(!serverSocket.isClosed()){ serverSocket.close(); } super.finalize(); } public void run() { // TODO Auto-generated method stub while(true){ try { Socket socket= serverSocket.accept(); System.out.println("连接成功```````"); BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8")); PrintWriter pw=new PrintWriter(socket.getOutputStream()); char[] by=new char[22]; br.read(by,0,22); String head=new String(by); if(head.equals("<policy-file-request/>")){ pw.write(xml+"\0"); pw.flush(); pw.close(); br.close(); socket.close(); }else{ InnerReaderThread inner=new InnerReaderThread(socket); inner.start(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } class InnerWriterThread extends Thread{ OutputStream out=null; Socket socket=null; InnerWriterThread(Socket socket){ this.socket=socket; try { out=socket.getOutputStream(); } catch (IOException e) { e.printStackTrace(); } } public void run() { while(true){ try { if(!socket.isClosed()){ out.write("你好".getBytes()); out.flush(); }else{ break; } Thread.currentThread().sleep(10000); } catch (SocketException e) { // TODO: handle exception e.printStackTrace(); if(!socket.isClosed()){ try { socket.close(); System.out.println("socket closed"); } catch (IOException e1) { e1.printStackTrace(); } } break; }catch (InterruptedException e) { // TODO: handle exception e.printStackTrace(); }catch(IOException e){ } } } } class InnerReaderThread extends Thread{ Socket socket=null; InputStream input=null; @Override public void run() { // TODO Auto-generated method stub try { BufferedReader reader=new BufferedReader(new InputStreamReader(input,"UTF-8")); String line=null; InnerWriterThread out=new InnerWriterThread(socket); out.start(); while((line=reader.readLine())!=null){ System.out.println(line); if(line.equals("exit")){ if(!socket.isClosed()){ socket.close(); } } } } catch (IOException e) { e.printStackTrace(); } } public InnerReaderThread(Socket socket) { super(); // TODO Auto-generated constructor stub this.socket=socket; try { input=socket.getInputStream(); } catch (IOException e) { e.printStackTrace(); } } protected void setSocket(Socket socket){ this.socket=socket; } } }
该类中含有两内部类用来发送和接收数据。
就这么多了,运行如图
发表评论
-
写自己的框架,让别人笑掉大牙吧(IOC2)
2013-04-22 14:23 902上篇中主要使用配置文件来定义一些类实例之间的组织关系 ... -
关于java中对象属性值的校验的思考
2013-04-15 14:09 1557现在在java 开发中经常会遇到要交验某个obje ... -
java 动态编译及执行实现Web式java开发
2012-11-29 17:05 923废话不说,让大家等了这么久,先看看截图 : 编译 ... -
JXLayer 使用简单介绍
2012-11-01 17:25 1320JXLayer 是一个很好的Swing 控件装饰类库,其主要要 ... -
关于Jtextinpt 内容的限制
2012-09-28 15:00 812在JTextInput 限制输入内容,这个一般的通过按键输入进 ... -
构造中的多态
2012-08-25 23:19 858各位仁兄,前几日我在 ... -
Swing JtableModel 使用之旅
2012-07-29 03:25 1032JTable 是我们一般展示数据的一个很好的Grid组建,个人 ... -
模版模式(TemplatePattern)
2012-07-15 11:08 797模版模式分为2个部分 1.抽象模版 2.具体模版 ... -
门面模式(Facade Pattern)
2012-06-10 19:37 991门面模式(Facade Pattern):门面模式在我个人感觉 ... -
代理模式例子
2012-06-04 15:07 989代理模式简单点就和现实中一样,只是代理实质性的还是别人在做。比 ... -
策略模式应对旅行中出现的问题
2012-06-04 14:21 889策略模式是针对在进行过程中出现一些问题的应对模式。一般可以分为 ... -
java 工厂模式简单介绍及例子
2012-06-03 23:16 1067java中工厂模式在java ee中经常碰见,是一种常见的模式 ... -
java 动态代理及自定义标注使用例子
2012-06-03 00:14 1240java中动态代理,在实际应用中有着很大的作用,譬如在一些类似 ... -
java 自定义注解
2012-01-30 16:09 835写道 package com.my;import j ... -
图片裁剪,缩放 批处理
2012-01-07 15:25 1025package dwr.demo; import ... -
java System.Properties
2011-10-26 13:19 750使用Properties.getProperty方法的参数也可 ... -
JDK自带的实用工具native2ascii.exe
2011-10-26 09:21 843在做Java开发的时候, ... -
dom4j xml 简单操作
2011-10-24 11:02 727package com.my.until; import j ... -
装饰模式例子(模仿修改船只用途)
2011-08-28 20:31 723模仿一次出海旅行中船只的用途的动态调整 功能 写道 pac ... -
观察模式实现粉丝模仿明星说话
2011-08-28 15:05 856艺术圈 写道 package cn.watchermodel ...
相关推荐
Flex+Java+Socket 实例源码聊天室是一个典型的网络通信应用,它结合了Adobe Flex作为前端用户界面技术,Java作为后端服务器处理技术,并利用Socket进行实时的数据传输。这个项目对于学习和理解客户端与服务器之间的...
1.背景:Flex Socket通信及安全策略,使用flex实现客户端,java实现服务端; 2.重点解决安全策略问题:将flash发布为html格式后,本地访问页面后,一般可以与服务器进行socket通信;但是部署到tomcat服务器上后无法...
设置服务端IP和端口 <br>----------------------------- chat 客户端代码 FLEX3 开发 ChatServer Delphi6 开发的服务端 Server java 开发的服务端 WindowsApplication1 C# 开发的服务端 <br>...
### Flex + Java 的 Socket 通信知识点解析 #### 一、概览 在现代软件开发中,前后端分离架构越来越受到青睐。在这种模式下,前端负责用户界面和用户体验,而后端则处理业务逻辑和数据管理。Flex 和 Java 分别作为...
JsSocket 是使用js + flex + java开发的一套基于web的socket通信组件 主要解决大家在开发web项目时需要用到前台与后台时时通信时的问题,除了HTML5的WebSocket之外,之前大家使用的方法一般为:1、页面间断刷新;2、...
本系统采用java+flex(socket)连接实现的聊天室功能 可以实现私聊、群聊、时时统计在线聊天人数!同时本系统为视频直播预留了接口方便实现视频和语音的同步直播功能!本系统注释详细!方便大家日后的学习!
在"flex(as3)+java(socket)文字聊天"的项目中,主要涉及以下几个关键知识点: 1. **Flex AS3编程**:使用ActionScript 3编写客户端代码,创建UI组件如文本输入框、文本显示区域和按钮,以及Socket对象用于网络通信...
3. **聊天通信协议**:在Flex4客户端与Java服务器之间,需要定义一套通信协议,以便正确地交换数据。这可能包括消息格式(JSON或XML)、心跳机制以保持连接活跃、错误处理策略等。例如,客户端发送的消息可能包含...
本示例探讨了如何使用Adobe Flex作为客户端,通过Socket接口与Java实现的多线程Socket服务端进行通信。以下是对这个主题的详细解释: 首先,Flex是一种开放源代码的富互联网应用程序(RIA)开发框架,它允许开发者...
在这个“java+flex基于socket的聊天案例”中,我们将深入探讨如何利用Java作为服务器端技术,Flex作为客户端展示层,通过Socket通信实现一个简单的聊天应用程序。 Java在后台处理业务逻辑和网络通信,它提供了...
在这个项目中,Java可能用于生成拓扑数据,如设备信息、连接关系等,并通过HTTP服务或者Web Socket等通信协议将数据传输到Flex前端。Java的强类型和面向对象特性使得它能很好地处理复杂的数据结构和业务逻辑。 在...
【JSP+Flex+JavaSocket+jQuery+Ajax聊天】是一个技术综合的应用实例,它整合了多种前端和后端技术,为用户提供类似QQ的聊天体验。下面将分别介绍这些技术及其在聊天应用中的作用。 **JSP(JavaServer Pages)**是...
Flex+Java上传开发工具包是用于构建Web应用中文件上传功能的一种技术组合。在这个工具包中,主要包括两个关键的库文件:comm-fileupload1.2.jar和comm-io.jar。这两个库文件分别扮演着不同的角色,共同协作以实现...
《基于Java+Flex实现的聊天程序详解》 在信息技术领域,构建实时的在线聊天系统是一项常见的挑战。本项目“基于Java+Flex实现的聊天程序”提供了一种有效的解决方案,它结合了Java的强大后端处理能力和Flex的富...
在Java、Python、C++等语言中,都有对应的socket API供开发者使用。 然后,AMF3是Adobe Flex和ActionScript 3.0中的数据序列化标准。它比早期的AMF0更高效,能够快速地编码和解码复杂的数据结构,如对象、数组、...
2. **Java网络编程**:了解Socket编程,学习如何建立服务器与客户端之间的连接,实现数据的可靠传输,以及处理并发连接。 3. **游戏逻辑实现**:五子棋的胜负判断,连珠规则,以及如何防止非法操作。这些逻辑通常在...
Flex可以通过使用第三方库如Socket.IO或Flash WebSocket API与Java后台建立WebSocket连接,实现数据的实时推送。 2. **Flex推送技术实现** - **Polling(轮询)**:简单轮询是最基础的推送实现,客户端定时向...
Flex与Java Socket通信是Web应用程序开发中的一个重要技术,它允许客户端和服务器之间进行实时、双向的数据交换。在本文中,我们将深入探讨如何实现Flex客户端与Java服务器之间的Socket通信。 首先,确保你拥有以下...
Flex Socket通信是Adobe Flex应用程序与Java应用程序之间进行低级网络通信的一种方式。Flex是一种基于ActionScript的开源框架,主要用于创建富互联网应用(RIA),而Java则是一种广泛使用的多平台编程语言,尤其在...
标题中的“flex与java采用socket方式通信”是指在开发分布式应用程序时,使用Adobe Flex作为前端UI框架,通过Socket协议与Java后端服务器进行数据交互的一种技术实现。Flex是一款基于ActionScript的开源框架,用于...