--- In [email protected], Drew Bourne <[EMAIL PROTECTED]> wrote:
>
> Socket.connect is non-blocking, which in this situation means the  
> rest of the execution chain for your method will continue to run  

Ok makes sense. 

Also, I had my nameservers set to opendns's servers. So the supposedly
"nonexistent" nonexistent.fubar.bom is actually resolved successfully
by opendns to their own "http" server. That was a bit unexpected.

> while the socket attempts to connect. The IOError will only be thrown  
> when there is no host specified. The security restrictions that  
> trigger the SecurityError are typically lower for local files when  
> run from a trusted folder (which is the case if you are using flex  
> builder or have set it up manually) so its unlikely the SecurityError  
> will be thrown for your situation.

I use the local-file-with-networking sandbox. I build my code using ant.

> 
> As for why your events are not firing it could possible because you  
> are defining sock as a variable local to the scope of the connect1  
> function and not on the class Bar, which means the garbage collector  
> is free to destroy that instance whenever it feels like, likely  
> before the events fire. Try declaring sock as a public or private 

I moved the scope of "sock" to class level and things started working
as expected. Thanks. Seems like a obvious thing to do in hindsight :) 

-srp


var  
> on the Bar class instead. eg:
> 
> public class Bar
> {
> public var sock:Socket;
> 
> public function connect1():void
> {
> sock = new Socket();
> ...
> }
> }
> 
> 
> hth,
> Drew
> 
> 
> On 03/01/2008, at 10:16 PM, saju_flex wrote:
> 
> > I have the following code that *should* fail :
> >
> > public class Bar {
> > public function connect1():void {
> > trace("t1");
> > var sock:Socket = new Socket();
> > sock.addEventListener(IOErrorEvent.IO_ERROR, ioerr_handler);
> > sock.addEventListener(SecurityErrorEvent.SECURITY_ERROR,
> > security_handler);
> > sock.addEventListener(Event.CONNECT, connect_handler);
> > try {
> > sock.connect("nonexistent.fubar.bom", 80);
> > trace("this should not print");
> > } catch (e:IOError) {
> > trace("caught error " + e);
> > } catch (e:SecurityError) {
> > trace("sec error " + e);
> > }
> > trace("t2");
> > }
> >
> > private function connect_handler(event:Event):void {
> > trace("MOJO connect() OK" + event);
> > }
> > private function ioerr_handler(event:IOErrorEvent):void {
> > trace("MOJO IOERROR EVENT OCCURRED " + event);
> > }
> >
> > private function security_handler(event:SecurityErrorEvent):void {
> > trace("MOJO SECERROR EVENT OCCURRED " + event);
> > }
> > }
> > }
> >
> > When running in a debug flashplayer I am seeing the trace msg "this
> > should not print" printing to logs. Also neither the IOErrorEvent
> > handler nor the SecurityErrorEvent handler fire. Also neither the
> > IOError nor the SecurityExceptionError are being thrown. I am loading
> > the file off local disk.
> >
> > Any idea why no error is being thrown ?
> >
> > -srp
> >
> >
> >
>


Reply via email to