Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   ServerSocketConnectEvent (http://www.flasher.ru/forum/showthread.php?t=160243)

leo150 10.07.2011 16:35

ServerSocketConnectEvent
 
Вложений: 1
подскажите пожалуйста, работает ли исходник? (cs5)
а то у меня выскакивает ошибка
Цитата:

C:\Program Files\Adobe\projects\server\ServerConnect.as, строка 25 1046: Тип не найден или не является константой времени компиляции: ServerSocketConnectEvent.
строка 25:
Код AS3:

private function onConnect(event:ServerSocketConnectEvent ):void

хотя я импорт сделал
Код AS3:

import flash.events.ServerSocketConnectEvent;

может у меня флеш кривой?

я пытаюсь сделать сокет сервер, потому что у самописного на java слишком большая задержка ответа на другой комп.
буду рад любому совету.

alatar 10.07.2011 17:28

ServerSocketConnectEvent доступен только в air версии 2 и выше. Убедитесь, что вы компилируете для AIR.

leo150 10.07.2011 21:04

спасибо!

теперь такое, не понимаю, в чем дело

создал приложение AIR 2.0
в main
Код AS3:

var _server:ServerConnect = new ServerConnect();

в классе ServerConnect
Код AS3:

package server
{
        import flash.events.Event;
        import flash.events.ProgressEvent;
        import flash.net.DatagramSocket;
        import flash.net.ServerSocket;
        import flash.net.Socket;
        import flash.data.SQLConnection;
        import flash.events.ServerSocketConnectEvent;
        import flash.display.Sprite;
 
        public class ServerConnect extends Sprite
        {
 
  //Сервер
  private var serverSocket:ServerSocket;
  //Массив клиентов
  private var clients:Vector;  //строка 23
  //конструктор
  public function ServerConnect()
  {
          serverSocket = new ServerSocket();
          clients = new Vector();
          serverSocket.addEventListener(ServerSocketConnectEvent.CONNECT, onConnect);
          trace('wtf');
  }
  private function onConnect(event:ServerSocketConnectEvent ):void
  {
          var clientSocket:Socket = event.socket;
          clientSocket.addEventListener( ProgressEvent.SOCKET_DATA, onClientSocketData);
          clients.push(clientSocket);
          trace(clientSocket.remoteAddress + ":" + clientSocket.remotePort);
  }
  private function onClientSocketData( event:ProgressEvent ):void
  {
          trace((event.target as Socket).readObject())
  }
  public function bind():void
  {
          if( serverSocket.bound )
          {
    serverSocket.close();
    serverSocket = new ServerSocket();
          }
 
          serverSocket.bind( 2222, "192.168.1.100"); //слушаем порт 2222
          serverSocket.listen();
  }
  private function send( text:String ):void
  {
          for(var i:int;i<clients.length;i++)
          {
    if( clients[i] != null )
    {
            clients[i].writeUTF( text );
            clients[i].flush();
    }
 
          }
  }
        }
}


выдает:
Цитата:

Попытка запуска и подключения к Flash Player по URL-адресу C:/Program Files/Adobe/projects/mainAIR-app.xml
[SWF] mainAIR.swf - 3670 байт после декомпрессии
TypeError: Error #1007: Instantiation attempted on a non-constructor.
at server::ServerConnect()[C:\Program Files\Adobe\projects\server\ServerConnect.as:23]
at ServerConnect()
at mainAIR_fla::MainTimeline/frame1()[mainAIR_fla.MainTimeline::frame1:1]
at runtime::ContentPlayer/loadInitialContent()
at runtime::ContentPlayer/playRawContent()
at runtime::ContentPlayer/playContent()
at runtime::AppRunner/run()
at global/runtime::ADLEntry()
Сеанс отладки прерван.
Инстанцирование покушение на не-конструктор - ?

вот появившийся xml
Код:

<?xml version ="1.0" encoding="utf-8" ?><application xmlns="http://ns.adobe.com/air/application/2.0"><id>mainAIR</id><version>1.0</version><filename>mainAIR</filename><description></description><!-- To localize the description, use the following format for the description element.<description><text xml:lang="en">English App description goes here</text><text xml:lang="fr">French App description goes here</text><text xml:lang="ja">Japanese App description goes here</text></description>--><name>mainAIR</name><!-- To localize the name, use the following format for the name element.<name><text xml:lang="en">English App name goes here</text><text xml:lang="fr">French App name goes here</text><text xml:lang="ja">Japanese App name goes here</text></name>--><copyright></copyright><initialWindow><content>mainAIR.swf</content><systemChrome>standard</systemChrome><transparent>false</transparent><visible>true</visible><fullScreen>false</fullScreen><aspectRatio>portrait</aspectRatio><renderMode>auto</renderMode></initialWindow><icon></icon><customUpdateUI>false</customUpdateUI><allowBrowserInvocation>false</allowBrowserInvocation></application>
помогите пожалуйста исправить!

etc 10.07.2011 23:43

Vector.<Socket>, а не Vector.

leo150 11.07.2011 14:11

спасибо, работает!

теперь ошибка во тут
Код AS3:

trace((event.target as Socket).readObject());

Цитата:

RangeError: Error #2006: The supplied index is out of bounds.
at flash.net::Socket/readObject()
at server::ServerConnect/onClientSocketData()[C:\Program Files\Adobe\projects\socket_server\server\ServerConnect.as:47]
т.е. нету данных которые можно было бы считать?

etc 11.07.2011 14:17

Либо нет данных, либо неверный формат.

leo150 11.07.2011 14:20

а как к этому прикрутить обработчик ошибок, чтобы знать что именно?

etc 11.07.2011 14:28

Смотрите содержимое сокета, длину контента и т. п. Пришедшие данные могут разбиваться на несколько частей, поэтому необходимо задавать длину пакета.

leo150 11.07.2011 14:32

Вложений: 1
вот обе стороны.
мне кажется, клиент ничего не посылает серверу.

забыл добавить, сервер работает, только если его откомпилировать.


подскажите пожалуйста, очень важно!

leo150 12.07.2011 12:09

вопрос решен.


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

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