![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2011
Сообщений: 10
|
Здравствуйте, хотелось бы рассказать о своей проблеме. У меня есть Java Server (Java клиент с ним нормально работает).
Я создал клиент на FLASH и тут начались проблемы. Когда происходит соединение с сервером, возможно только первые 2-3 секунды общаться с сервером! Дальше флешка просто ничего не посылает! Вот код класса для работы с сокетами (в порядок не приводил): package org.conn { import flash.errors.*; import flash.events.*; import flash.net.Socket; public class CustomSocket { var CSsocket:Socket = new Socket(); public function CustomSocket(host:String = null, port:uint = 0) { CSsocket.timeout = 100000; CSsocket.connect(host,port); configureListeners(); } private function configureListeners():void { //socket.addEventListener(Event.CLOSE, this.closeHandler); //socket.addEventListener(Event.CONNECT, this.connectHandler); //socket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); CSsocket.addEventListener(Event.CONNECT, Connected); //socket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler); } private function ErrorHandler(event:Event):void { trace("FSDFSDF"); } private function Connected(event:Event):void { trace("Успешное соединение! "); } private static const _TRIM_PATTERN:RegExp = /^\s*|\s*$/g; public static function trim(text:String):String { return text.replace(_TRIM_PATTERN, ""); } public function socketWrite(Message:String) { CSsocket.writeUTF(Message); } public function socketRead():String { var CountBytes:int = CSsocket.bytesAvailable; var Response:String = trim(CSsocket.readUTFBytes(CountBytes)); return Response; } private function socketDataHandler(event:ProgressEvent):String { var CountBytes:int = CSsocket.bytesAvailable; var Response:String = trim(CSsocket.readUTFBytes(CountBytes)); trace("socketDataHandler: " + Response); return Response; } } } Security.loadPolicyFile("xmlsocket://localhost:813"); function Connect(event:Event):void { var CSsocket:CustomSocket = new CustomSocket("localhost", 5000); CSsocket.socketRead(); CSsocket.socketWrite("gasdg"); } Я понимаю, что если много раз нажимаешь на кнопку, которая вызывает функцию Connect, то порт будет просто занят. Но почему когда я закрываю сокет после отправки и принятия данных, Flash выдает ошибку? Я умею размещать начальный код для запуска всего механизма только в кадре, может быть еще можно где-нибудь размещать? (я начинающий флешер, до этого программировал на PHP, C#, Java, JS). P.S: Policy File работает на ура! Последний раз редактировалось TrueTrAxeX; 25.01.2012 в 14:17. |
![]() |
Часовой пояс GMT +4, время: 02:14. |
|
|
« Предыдущая тема | Следующая тема » |
|
|