注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

有你做翅膀,孤单都是坚强

生命中总要经历曲折,或许是我们不愿意,突然到最后走不通,想重新来过,记录每件小事

 
 
 

日志

 
 
关于我
K24

曾经的生涩,曾经的懵懂,曾经的自恋,都随风去吧。。。

网易考拉推荐
 
 

flex socket 局域网文件传输  

2012-11-03 10:46:47|  分类: @flex |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
文件格局
flex socket 局域网文件传输 - 李印贞 - 有你做翅膀,孤单都是坚强
 下面贴出代码
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="1148" height="424" creationComplete="init()">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Script>
<![CDATA[
import flash.events.ServerSocketConnectEvent;
import flash.net.ServerSocket;
import flash.utils.flash_proxy;

import mx.controls.Alert;
import mx.events.FlexEvent;

private var na:NativeProcess = new NativeProcess();
private var info:NativeProcessStartupInfo = new NativeProcessStartupInfo();
private var serverSocket:ServerSocket;
//server-code
//初始化,监听端口
private function init():void{
serverSocket = new ServerSocket();
serverSocket.addEventListener(Event.CONNECT,onListening);
serverSocket.bind(8888);
serverSocket.listen();
txt.appendText("开始监听8888端口!"+"\n");

}
//监听端口事件
private function onListening(e:ServerSocketConnectEvent):void{

var socket:Socket = e.socket;
socket.addEventListener(ProgressEvent.SOCKET_DATA,receiveData);

}

private var array:ByteArray=new ByteArray();//文件内容
private var str:String="";//文件名称
//接收数据事件
private var a:Boolean = true;
private function receiveData(e:ProgressEvent):void{

var socket:Socket = e.target as Socket;


/* */

while(socket.bytesAvailable){
if(a){
str= socket.readUTF();
var strsize:Number=socket.readFloat();
trace("文件大小---------- " + strsize);
a = false;
}
//array.position=0;
trace("array length before--------- " + array.length);

socket.readBytes(array,array.length);
socket.flush();
// this.txtRec.text+=socket.readMultiByte(socket.bytesAvailable,"utf8")+"\n";

trace("array length after--------- " + array.length);

}


/* for(var i:int = 0;i<array.length;i++){
trace("str -------- " + array[i]);
} */
///var bytes:ByteArray = new ByteArray();
///socket.readBytes(bytes);
///bytes.uncompress();
///var obj = bytes.readObject();
///Alert.show(obj);
//var str_one:String = socket.readUTFBytes(500);
//txt.appendText("接收到客户端发过来的信息: "+str+"\n");
Getname.text="文件名称:"+str;
Getsize.text="文件大小:"+strsize+"字节";
Getname.visible=true;
Getsize.visible=true;
save.visible=true;
}
//client-code
//测试连接事件
protected function btn_clickHandler(event:MouseEvent):void
{
var socket:Socket = new Socket();
socket.addEventListener(Event.CONNECT,onConnect);
socket.addEventListener(IOErrorEvent.IO_ERROR,ioerror);
socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR,securityerror);
socket.connect(getip.text,8888);

}
//发送数据事件
protected function btn_clickHandler1(event:MouseEvent):void
{
var socket:Socket = new Socket();
socket.addEventListener(Event.CONNECT,onConnect1);
socket.addEventListener(IOErrorEvent.IO_ERROR,ioerror);
socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR,securityerror);
socket.connect(getip.text,8888);

}
//io异常处理事件
private function ioerror(e:IOErrorEvent):void{
Alert.show(e.text);
}
//安全沙箱异常处理事件
private function securityerror(e:SecurityErrorEvent):void{
Alert.show(e.text);
}
//测试连接成功
private function onConnect(e:Event):void{

Alert.show("连接成功!");

}


//发送数据成功
private function onConnect1(e:Event):void{

// txt.text += "连接本地8888端口成功!\n";
//txt.appendText("连接本地8888端口成功!\n");
var socket:Socket = e.target as Socket;
socket.writeUTF(filename);
socket.writeFloat(filesize);
socket.writeBytes(bytes)//写进socket
socket.flush();
inputs.text ="";
// txt.text += "数据发送成功!";
//txt.appendText("数据发送成功!");

}


// private function checkfile():void
// {
// dlgFile.browseForOpen("打开",[filefilter]);//浏览文件
// dlgFile.addEventListener(Event.SELECT,selectHandle);
// function selectHandle(e:Event):void
// {
// var file:File=e.target as File; //把所选的文件作为文件来处理,所以获得文件
// txtFilePath.text= file.nativePath;//显示文件路径
// //定义FileStream类实例,用于处理文件流
// var stream:FileStream = new FileStream();
//
// stream.open(file,FileMode.READ);//以只读的方式打开文件
// //Alert.show("上传 " + file.name + " (共 "+Math.round(file.size)+" 字节)");
// filename=file.name;//文件名称
// filesize=Math.round(file.size);//文件大小
// filepathname.text="文件名称:"+filename;
// filepathsize.text="文件大小:"+filesize+"字节";
// //var str:String=stream.readUTFBytes(stream.bytesAvailable);
// var bytes:ByteArray = new ByteArray();
// //bytes.writeUTF(str);
// stream.readBytes(bytes,0,stream.bytesAvailable);
// var myFile:File =new File("C://Users//XIANG//Desktop//abc.rar");
// var myFileStream:FileStream = new FileStream();
// myFileStream.open(myFile, FileMode.WRITE);
// myFileStream.writeBytes(bytes, 0, bytes.length);
// //stream.close();
// }
// }



//文件过滤,只允许打开txt文件
private var filefilter:FileFilter = new FileFilter("所有文件","*.*");
//定义一个File类实例
private var dlgFile:File=new File();
private var filename:String="";
private var filesize:Number=0;
private var bytes:ByteArray = new ByteArray();
private function SelectFile():void
{
dlgFile.browseForOpen("打开",[filefilter]);//浏览文件
dlgFile.addEventListener(Event.SELECT,selectHandle);
function selectHandle(e:Event):void
{
bytes.position=0;
var file:File=e.target as File; //把所选的文件作为文件来处理,所以获得文件
txtFilePath.text= file.nativePath;//显示文件路径
//定义FileStream类实例,用于处理文件流
var stream:FileStream = new FileStream();

stream.open(file,FileMode.READ);//以只读的方式打开文件
//Alert.show("上传 " + file.name + " (共 "+Math.round(file.size)+" 字节)");
filename=file.name;//文件名称
filesize=Math.round(file.size);//文件大小
filepathname.text="文件名称:"+filename;
filepathsize.text="文件大小:"+filesize+"字节";
//var str:String=stream.readUTFBytes(stream.bytesAvailable);
//bytes.writeUTF(str);

while(stream.bytesAvailable){
stream.readBytes(bytes);

}
}
}



//在socket中接收到数据流,执行保存文件方法保存文件
protected function SaveFile(file:ByteArray,strfileName:String):void
{

var myFile:FileReference = new FileReference();
//myFile.browseForSave();
//var myFileStream:FileStream = new FileStream();
//myFileStream.open(myFile, FileMode.WRITE);
//myFileStream.writeBytes(file, 0, file.length);
myFile.save(file,strfileName);
//myFileStream.close();
txt.appendText("文件: "+strfileName+"接收成功\n");
Getname.text="";
Getsize.text="";
Getname.visible=false;
Getsize.visible=false;
save.visible=false;
}





]]>
</fx:Script>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<s:TextArea id="txt" x="168" y="30" width="494" editable="false"/>
<s:Button label="测试链接" id="btn" click="btn_clickHandler(event)" x="209" y="333"/>
<mx:TextArea id="inputs" x="168" y="189" width="494" height="116"/>
<s:Button x="611" y="333" label="发送" click="btn_clickHandler1(event)"/>
<s:Label x="64" y="65" text="服务器端"/>
<s:Label x="64" y="225" text="客户端"/>


<s:Panel x="713" y="10" width="362" height="161" title="从文件中读取数据">
<s:Label x="10" y="34" fontFamily="中易黑体" fontSize="12" text="文件路径"/>
<s:TextInput x="63" y="29" width="214" id="txtFilePath"/>
<s:Button x="281" y="28" label="选择文件" click="SelectFile()"/>
<s:Label id="filepathname" x="14" y="65" fontSize="12" text="文件名称"/>
<s:Label id="filepathsize" x="14" y="91" fontSize="12" text="文件大小"/>
<s:TextInput id="getip" x="63" y="3" width="214"/>
<s:Label x="11" y="8" fontSize="12" text="输入IP"/>
</s:Panel>
<s:Panel x="713" y="180" width="362" height="161" title="从socket端获取数据">
<s:Label id="Getname" x="10" y="10" fontSize="12" text="文件名称" visible="false"/>
<s:Label id="Getsize" x="10" y="39" fontSize="12" text="文件大小" visible="false"/>
<s:Button x="280" y="20" id="save" label="文件接收" click="SaveFile(array,str)" visible="false"/>
<!--<s:TextArea id="txtRec"/>-->
</s:Panel>
</s:WindowedApplication>


输入局域网内用户ip, 你们就可以相互传送文件了, 很方便吧
  评论这张
 
阅读(72)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017