I have an AS3 socket script to connect and retrieve data from a FTP account.
It works fine when the device is connected to a WIFI or LAN network. The problem is that when the device is connected to a 3G network the my script fails 90% of the times. There must be some kind of DATA LOSS.
I need to detect that data loss and send data to the server again.
If you think you can do that then contact me.
Here's my code:
import [login to view URL];
import [login to view URL];
import [login to view URL];
import [login to view URL];
import [login to view URL];
//
var ftp_host:String="[login to view URL]";
var ftp_port:Number=21//or your ftp port;
var ftp_username:String="username";
var ftp_password:String="password";
var ftp_path:String="/";
var s,r;
var listOfFiles:Array;
//
readFromFTP()
function readFromFTP(e=null){
s = new Socket(ftp_host,ftp_port);
r = new Socket();
[login to view URL](IOErrorEvent.IO_ERROR,onIOERR);
[login to view URL](ProgressEvent.SOCKET_DATA, onReturnData);
[login to view URL](SecurityErrorEvent.SECURITY_ERROR,onSecERR);
[login to view URL](ProgressEvent.SOCKET_DATA, onServData);
[login to view URL]([login to view URL], onPasvConn);
[login to view URL](IOErrorEvent.IO_ERROR,onIOERR);
[login to view URL](SecurityErrorEvent.SECURITY_ERROR,onSecERR);
[login to view URL](UncaughtErrorEvent.UNCAUGHT_ERROR, handleGlobalErrors);
}
function onReturnData(evt:ProgressEvent)
{
var d = [login to view URL]([login to view URL]);
trace(d);
[login to view URL](d);
if([login to view URL]("220 ")>-1){
[login to view URL]("Username sent\n");
[login to view URL]("USER "+ftp_username+"\n");
[login to view URL]()
}
if([login to view URL]("331 ")>-1){
[login to view URL]("Password sent\n");
[login to view URL]("PASS "+ftp_password+"\n");
[login to view URL]()
}
if ([login to view URL]("230") > -1)
{
[login to view URL]("PASV command sent\n");
[login to view URL]("PASV \n");
[login to view URL]();
}
var a = [login to view URL]('227');
if (a > -1)
{
var st = [login to view URL]("(",a);
var en = [login to view URL](")",a);
var str;
str = [login to view URL](st + 1,en);
var a2 = [login to view URL](",");
var p1 = [login to view URL]();
var p2 = [login to view URL]();
var ip:String = [login to view URL](".");
var port:int=(p2*256)+(p1*1);
[login to view URL](ip, port);
}
if([login to view URL]("226 ")>-1){
[login to view URL]("QUIT command sent\n");
[login to view URL]("QUIT \n");
[login to view URL]();
}
if([login to view URL]("221 ")>-1){
}
}
function onPasvConn(evt:Event):void
{
//trace("CONNECTED TO DATA PORT");
[login to view URL]("CONNECTED TO DATA PORT\n");
[login to view URL]("NLST "+ftp_path+"\n");
[login to view URL]();
}
function onServData(evt:ProgressEvent):void
{
var d = [login to view URL]([login to view URL]);
trace(d);
[login to view URL](d);
}
function onIOERR(evt:IOErrorEvent)
{
trace(evt.errorID+":"+[login to view URL]);
[login to view URL](evt.errorID+":"+[login to view URL]);
}
function onSecERR(evt){
[login to view URL]("Security error\n");
}
function handleGlobalErrors(evt){
[login to view URL]("Unhandeled Error\n");
}