Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Разъясните, пожалуйста, по сокетам (http://www.flasher.ru/forum/showthread.php?t=126035)

Lexa_ 08.06.2009 16:08

Разъясните, пожалуйста, по сокетам
 
Вот пример на Flex, коннектится к сокет-серверу, отправляет запрос, получает строку.
Код AS3:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="absolute"
        backgroundColor="#CCCCCC" height="449" width="676"
        pageTitle="Test application">
 
        <mx:TextArea id="tesst" right="10" bottom="36" top="71" width="254" text="{tracer}"/>
 
        <mx:Button label="Connect" color="#5E3601" x="427" y="11click="initConnect()"/>       
        <mx:Button x="412" y="41" label="Disconnect" click="sendRequest('EXIT')"/>
        <mx:Button label="Update list" right="82" top="11" click="sendRequest('GetList')"/>
 
        <mx:Script>
                <![CDATA[
                import flash.net.Socket;
 
                    [Bindable]
                    public var tracer:String;
 
                        public var sock:Socket;
 
                        public function initConnect():void
                        {
                                sock = new CustomSocket("localhost", 3000);
                                configureListeners();
                        }
 
                    public function configureListeners():void {
                        sock.addEventListener(Event.CLOSE, closeHandler);
                        sock.addEventListener(Event.CONNECT, connectHandler);
                        sock.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
                        sock.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
                        sock.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);
                        tracer += "begin";
                    }
 
                    private function writeln(str:String):void {
                        str += "\n";
                        try {
                            sock.writeUTFBytes(str);
                        }
                        catch(e:IOError) {
                            tracer += "ERROR#" + e.errorID + ", " + e.name + ", " + e.message;
                        }
                    }
 
                    private function sendRequest(str:String):void {
                        tracer += "sendRequest \r";
                        writeln(str);
                        sock.flush();
                    }
 
                    private function readResponse():void {
                        var lenght:uint = sock.bytesAvailable;
                        try {
                        var str:String = sock.readUTFBytes(lenght);
                        tracer += "Read from socket " + lenght +" byte: " + str + "\r";
                        }
                        catch(e:EOFError) {
                                tracer += "ERROR#" + e.errorID + ", " + e.name + ", " + e.message;
                        }
                    }
 
                    private function socketDataHandler(event:ProgressEvent):void {
                        tracer += "socketDataHandler: " + event + "\r";
                        readResponse();
                    }               
 
                    private function closeHandler(event:Event):void {
                        tracer += "closeHandler: " + event + "\r";
                    }
 
                    private function connectHandler(event:Event):void {
                        tracer += "connectHandler: " + event + "\r";
                    }
 
                    private function ioErrorHandler(event:IOErrorEvent):void {
                        tracer += "ioErrorHandler: " + event + "\r";
                    }
 
                    private function securityErrorHandler(event:SecurityErrorEvent):void {
                        tracer += "securityErrorHandler: " + event + "\r";
                    }
 
                ]]>
        </mx:Script>
</mx:Application>

В результате получаю вот это:

nullbeginconnectHandler: [Event type="connect" bubbles=false cancelable=false eventPhase=2] // законнектились. все ок

sendRequest // отправили запрос
socketDataHandler: [ProgressEvent type="socketData" bubbles=false cancelable=false eventPhase=2 bytesLoaded=63 bytesTotal=0] // получили ответ в 63 байта
Read from socket 0 byte: // а вот тут самое интересное, bytesAvailable вернул 0, ничего не прочитали.

Подозреваю, что где-то нубская ошибка, но поймать не могу. Если не трудно - ткните :)


Часовой пояс GMT +4, время: 19:43.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.