AS3 socket 连接 FTP 历程

这篇博客详细记录了使用AS3通过Socket连接FTP服务的步骤和注意事项,包括FTP命令交互、Flash安全沙箱、文件选择、端口授权、AS与JS交互,以及解决丢包问题的策略。虽然无法提供完整源码,但提供了关键实现思路。
摘要由CSDN通过智能技术生成

AS3 socket 连接 FTP 历程

本文主要记录AS3(flash)基于socket连接ftp服务的处理过程,过程比较艰难,坑很多,记录下来,也许能够帮到有缘人。限于公司相关政策,未能放出全部源码请见谅,主要提供解决思路,以及相关问题的处理。

相关技术

  1. AS3 socket ,主要用于ftp连接处理;
  2. ftp命令以及参数响应 ,进行数据交互的过程理解;
  3. flash FileReference 类 ,文件选择;
  4. flash 安全沙箱,以及端口授权
  5. AS,js交互
  6. ftp 被动模式传输的丢包问题,如果有拆包处理,并且发送的文件不完整;

实现过程简述

基本结构如下图所示:

在这里插入图片描述

  1. flash客户端编写
    实现思路

使用FileReference来进行文件选择,注册监听
fileReference.addEventListener(Event.SELECT, onFileSelect);//文件选择触发
fileReference.addEventListener(ProgressEvent.PROGRESS, progressHandle);//文件加载监听,用于刷新百分比进度
fileReference.addEventListener(Event.COMPLETE, completeHandle);//文件加载完成事件
在completeHandle中调用我们实现的ftp上传服务处理。
其中过程注册的js交互方法就不列举了。

Socket交互处理

private function connect():void{
   
   		Security.loadPolicyFile("xmlsocket://"+serverIP+":"+_securityPort);
   		ftpSocket = new Socket();
   		ftpSocket.addEventListener(ProgressEvent.SOCKET_DATA, ftpSocketDataHandle);
   		ftpSocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR,ftpSocketSecurityErrorHandle);
   		ftpSocket.addEventListener(IOErrorEvent.IO_ERROR,ftpIOErrorHandle);
   		ftpSocket.addEventListener(Event.CONNECT,onConnect);
   		ftpSocket.connect(serverIP, serverPort);
}  

其中Security.loadPolicyFile方法为授权检查,我们访问的端口需要通过flashplayer的安全沙箱检查,flashplayer会在访问之前调用843端口,这里我们可以明确定义要访问的端口,例如:1234。在ftp服务器需要创建一个socket服务,此处我使用java实现了一个。

package org.jod.web.center.flashUpload;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值