Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.06.2009, 16:08
Lexa_ вне форума Посмотреть профиль Отправить личное сообщение для Lexa_ Найти все сообщения от Lexa_
  № 1  
Ответить с цитированием
Lexa_

Регистрация: Mar 2009
Сообщений: 33
Question Разъясните, пожалуйста, по сокетам

Вот пример на 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="11"  click="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, время: 04:53.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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