- 浏览: 132675 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
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 856上篇中主要使用配置文件来定义一些类实例之间的组织关系 ... -
关于java中对象属性值的校验的思考
2013-04-15 14:09 1505现在在java 开发中经常会遇到要交验某个obje ... -
java 动态编译及执行实现Web式java开发
2012-11-29 17:05 884废话不说,让大家等了这么久,先看看截图 : 编译 ... -
JXLayer 使用简单介绍
2012-11-01 17:25 1270JXLayer 是一个很好的Swing 控件装饰类库,其主要要 ... -
关于Jtextinpt 内容的限制
2012-09-28 15:00 753在JTextInput 限制输入内容,这个一般的通过按键输入进 ... -
构造中的多态
2012-08-25 23:19 815各位仁兄,前几日我在 ... -
Swing JtableModel 使用之旅
2012-07-29 03:25 989JTable 是我们一般展示数据的一个很好的Grid组建,个人 ... -
模版模式(TemplatePattern)
2012-07-15 11:08 750模版模式分为2个部分 1.抽象模版 2.具体模版 ... -
门面模式(Facade Pattern)
2012-06-10 19:37 922门面模式(Facade Pattern):门面模式在我个人感觉 ... -
代理模式例子
2012-06-04 15:07 938代理模式简单点就和现实中一样,只是代理实质性的还是别人在做。比 ... -
策略模式应对旅行中出现的问题
2012-06-04 14:21 809策略模式是针对在进行过程中出现一些问题的应对模式。一般可以分为 ... -
java 工厂模式简单介绍及例子
2012-06-03 23:16 1007java中工厂模式在java ee中经常碰见,是一种常见的模式 ... -
java 动态代理及自定义标注使用例子
2012-06-03 00:14 1158java中动态代理,在实际应用中有着很大的作用,譬如在一些类似 ... -
java 自定义注解
2012-01-30 16:09 792写道 package com.my;import j ... -
图片裁剪,缩放 批处理
2012-01-07 15:25 983package dwr.demo; import ... -
java System.Properties
2011-10-26 13:19 710使用Properties.getProperty方法的参数也可 ... -
JDK自带的实用工具native2ascii.exe
2011-10-26 09:21 805在做Java开发的时候, ... -
dom4j xml 简单操作
2011-10-24 11:02 657package com.my.until; import j ... -
装饰模式例子(模仿修改船只用途)
2011-08-28 20:31 690模仿一次出海旅行中船只的用途的动态调整 功能 写道 pac ... -
观察模式实现粉丝模仿明星说话
2011-08-28 15:05 812艺术圈 写道 package cn.watchermodel ...
相关推荐
Flex+Java+Socket 实例源码 聊天室 需要 flex4 以上 eclipse
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基于socket的通信
JsSocket 是使用js + flex + java开发的一套基于web的socket通信组件 主要解决大家在开发web项目时需要用到前台与后台时时通信时的问题,除了HTML5的WebSocket之外,之前大家使用的方法一般为:1、页面间断刷新;2、...
本系统采用java+flex(socket)连接实现的聊天室功能 可以实现私聊、群聊、时时统计在线聊天人数!同时本系统为视频直播预留了接口方便实现视频和语音的同步直播功能!本系统注释详细!方便大家日后的学习!
flex的socket客户端连接java多线程socket服务端demo
java+flex基于socket的聊天案例 很简单的例子,主要介绍socket在java和flex之间的应用。
flex java socket 文字聊天,下载后可直接运行,不需要做改动
Flex和java的socket通信 Flex和java的socket通信
Flex与Java Socket通信 很适用的例子啊
flex与JAVA的SOCKET通信,详细讲解flex与JAVA的SOCKET通信
Flex的AS3与Java的Socket通信
对flex开发socket的服务的一个总结,包括连java,c++的server socket
flex利用socket进行文件断点续传,带进度条,本地代码能完整运行,Flash Builder 4 ,eclipse ,jdk1.6,java代码偶尔会报线程错误,但是不会影响上传功能
Flex 利用socket实现断点续传源码,有进度条,在本地代码可以完整运行,Flash Builder 4 ,eclipse ,jdk1.6,java代码偶尔会报线程错误,但是不会影响上传功能
博文链接:https://xiaoa7.iteye.com/blog/247967
前端用flash实现,后端用java实现,socket通讯
flex 和java 之间的相互通信
Flex 与 java socket的交互, 一个小小的聊天系统,有解决图文混排的功能,聊天表情的支持。 希望对大家有锁帮助。