Pakiet | flash.net |
Klasa | public class XMLSocket |
Dziedziczenie | XMLSocket EventDispatcher Object |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
- Wiadomości XML są przesyłane pełnodupleksowym połączeniem gniazda strumienia TCP/IP.
- Każda wiadomość XML jest kompletnym dokumentem XML zakończonym bajtem zerowym (0).
- Za pomocą pojedynczego połączenia XMLSocket może zostać przesłana i odebrana nieograniczona liczba wiadomości XML.
Ustawienie serwera do komunikowania się z obiektem XMLSocket może stanowić wyzwanie. Jeśli aplikacja użytkownika nie wymaga interakcyjności w czasie rzeczywistym, należy skorzystać z klasy URLLoader zamiast klasy XMLSocket.
Aby użyć metod klasy XMLSocket, należy najpierw skorzystać z konstruktora new XMLSocket
w celu utworzenia obiektu XMLSocket.
Pliki SWF w lokalnym obszarze izolowanym z dostępem do systemu plików nie mogą używać gniazd.
Pliki reguł gniazd w hostach docelowych określają hosty, z których pliki SWF mogą tworzyć połączenia gniazd oraz porty, do których te połączenia mogą być tworzone. Wymagania dotyczące bezpieczeństwa, w odniesieniu do plików reguł gniazd, zostały zaostrzone w ostatnich kilku wydaniach programu Flash Player. We wszystkich wersjach programu Flash Player, firma Adobe zaleca używanie pliku reguł gniazd; w niektórych przypadkach plik ten jest wymagany. Dlatego, jeśli używane są obiekty XMLSocket, należy upewnić się, że w razie potrzeby docelowy host zapewnia plik reguł gniazd.
Poniższa lista podsumowuje wymagania dotyczące plików zasad gniazd w różnych wersjach programu Flash Player:
- W programie Flash Player 9.0.124.0 oraz nowszych wersjach plik reguł gniazd jest wymagany dla połączenia XMLSocket. Oznacza to, że plik reguł gniazd na hoście docelowym jest wymagany bez względu na port, z którym nawiązywane jest połączenie i wymagany jest nawet wtedy, gdy połączenie z portem jest realizowane z portem na tym samym hoście, na którym znajduje się plik SWF.
- W programie Flash Player w wersji 9.0.115.0 i starszych, dla połączeń z portem o numerze poniżej 1024 lub połączeń z hostem innym niż ten, na którym znajduje się plik SWF, wymagane jest użycie pliku reguł gniazd na docelowym hoście.
- W programie Flash Player 9.0.115.0 nawet, jeśli nie jest wymagane użycie pliku reguł gniazd, podczas korzystania z programu Flash Debug Player zostanie wyświetlone ostrzeżenie, gdy na docelowy hoście nie ma pliku reguł.
Jednak w aplikacji Adobe AIR zawartość obszaru izolowanego application
(zawartość instalowana razem z aplikacją AIR) nie jest ograniczana przez te reguły zabezpieczeń.
Więcej informacji na temat zabezpieczeń zawiera odpowiedni temat w Centrum programistów programu Flash Player w kategorii Bezpieczeństwo.
Powiązane elementy interfejsu API
Właściwość | Zdefiniowane przez | ||
---|---|---|---|
connected : Boolean [tylko do odczytu]
Wskazuje, czy obiekt XMLSocket jest aktualnie podłączony. | XMLSocket | ||
constructor : Object
Odwołanie do obiektu klasy lub funkcji konstruktora, dotyczące danej instancji obiektu. | Object | ||
timeout : int
Wskazuje czas oczekiwania na połączenie w milisekundach. | XMLSocket |
Metoda | Zdefiniowane przez | ||
---|---|---|---|
Tworzy nowy obiekt XMLSocket. | XMLSocket | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Rejestruje obiekt detektora zdarzeń w obiekcie EventDispatcher, dzięki czemu detektor będzie otrzymywał powiadomienia o zdarzeniu. | EventDispatcher | ||
Zamyka połączenie określone przez obiekt XMLSocket. | XMLSocket | ||
Nawiązuje połączenie z określonym hostem internetowym za pośrednictwem określonego portu TCP. | XMLSocket | ||
Wywołuje zdarzenie, tj. kieruje je do przepływu zdarzeń. | EventDispatcher | ||
Sprawdza, czy obiekt EventDispatcher zawiera jakiekolwiek detektory zarejestrowane dla konkretnego typu zdarzeń. | EventDispatcher | ||
Wskazuje, czy dla obiektu zdefiniowano określoną właściwość. | Object | ||
Wskazuje, czy instancja klasy Object należy do łańcucha prototypów obiektu określonego jako parametr. | Object | ||
Wskazuje, czy określona właściwość istnieje i jest przeliczalna. | Object | ||
Usuwa detektor z obiektu EventDispatcher. | EventDispatcher | ||
Konwertuje obiekt XML lub dane określone przez parametr obiektu na ciąg znaków, a następnie przekazuje ten ciąg na serwer (uzupełniając go bajtem zerowym). | XMLSocket | ||
Ustawia dostępność właściwości dynamicznej używanej w pętlach. | Object | ||
Zwraca ciąg reprezentujący obiekt — sformatowany zgodnie z konwencjami właściwymi dla ustawień regionalnych. | Object | ||
Zwraca ciąg reprezentujący określony obiekt. | Object | ||
Zwraca pierwotną wartość dla określonego obiektu. | Object | ||
Sprawdza, czy detektor zdarzeń określonego typu jest zarejestrowany w tym obiekcie EventDispatcher lub jego elementach macierzystych. | EventDispatcher |
Zdarzenie | Podsumowanie | Zdefiniowane przez | ||
---|---|---|---|---|
[zdarzenie broadcast] Wywoływane, gdy program Flash Player lub aplikacja środowiska wykonawczego AIR uzyskuje fokus w systemie operacyjnym i przechodzi w stan aktywny. | EventDispatcher | |||
Wywoływana, gdy serwer zamyka połączenie z gniazdem. | XMLSocket | |||
Wywoływana po pomyślnym wywołaniu metody XMLSocket.connect(). | XMLSocket | |||
Wywoływana po wysłaniu lub odbiorze surowych danych. | XMLSocket | |||
[zdarzenie broadcast] Wywoływane, gdy program Flash Player lub aplikacja AIR traci fokus w systemie operacyjnym i przechodzi w stan nieaktywny. | EventDispatcher | |||
Wywoływana, gdy wystąpi błąd wejścia lub wyjścia uniemożliwiający wysyłanie lub odbieranie danych. | XMLSocket | |||
Wywoływane, jeśli wywołanie metody XMLSocket.connect() skutkuje próbą połączenia się z serwerem na zewnątrz obszaru izolowanego lub próbą połączenia się z portem o numerze niższym niż 1024. | XMLSocket |
connected | właściwość |
connected:Boolean
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wskazuje, czy obiekt XMLSocket jest aktualnie podłączony. Istnieje również możliwość sprawdzenia, czy nawiązanie połączenia zakończyło się powodzeniem przez zarejestrowanie zdarzenia connect
i zdarzenia ioError
.
Implementacja
public function get connected():Boolean
Powiązane elementy interfejsu API
timeout | właściwość |
timeout:int
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Wskazuje czas (liczba milisekund) oczekiwania na połączenie.
Jeśli połączenie nie zostanie nawiązane w określonym czasie, połączenie zakończy się niepowodzeniem. Wartość domyślna to 20,000 (dwadzieścia sekund).
Implementacja
public function get timeout():int
public function set timeout(value:int):void
XMLSocket | () | Konstruktor |
public function XMLSocket(host:String = null, port:int = 0)
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Tworzy nowy obiekt XMLSocket. Jeśli żaden parametr nie zostanie określony, utworzone zostanie gniazdo, które początkowo nie będzie połączone z żadnym hostem. Jeśli parametry zostaną określone, nastąpi próba połączenia z określonym hostem i portem.
Uwaga: zalecane jest używanie konstruktora bez parametrów, dodanie wszelkich detektorów zdarzeń, a następnie wywołanie metody connect
z parametrami host
i port
. Ta sekwencja gwarantuje, że wszystkie detektory zdarzeń zadziałają prawidłowo.
host:String (default = null ) — Pełna kwalifikowana nazwa domeny DNS lub adres IP w postaci .222.333.444. W wersji programu Flash Player 9.0.115.0 oraz w środowisku w wersji AIR 1.0 i nowszych można określać adresy IPv6, np. rtmp://[2001:db8:ccc3:ffff:0:444d:555e:666f]. Można także określić wartość jako null w celu połączenia się z serwerem hosta, na którym znajdują się pliki SWF. Jeśli plik SWF wydający to polecenie uruchomiony jest w przeglądarce sieci Web, wówczas host musi być w tej samej domenie co plik SWF.
| |
port:int (default = 0 ) — Numer portu protokołu TCP na docelowym hoście użyty w celu nawiązania połączenia. W programie Flash Player 9.0.124.0 i nowszych wersjach na docelowym hoście musi znajdować się plik reguł gniazd określający, że zezwolono na połączenia gniazd z hosta, na którym znajduje się plik SWF, do określonego portu. We wcześniejszych wersjach programu Flash Player plik reguł gniazd wymagany jest jedynie wtedy, gdy połączenie będzie realizowane na porcie o numerze poniżej 1024, lub gdy połączenie będzie realizowane z hostem innym niż ten, na którym znajduje się plik SWF.
|
Powiązane elementy interfejsu API
close | () | metoda |
public function close():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zamyka połączenie określone przez obiekt XMLSocket. Zdarzenie close
wywoływane jest jedynie wtedy, gdy serwer zamyka połączenie; nie jest wywoływane wraz z wywołaniem metody close()
.
Powiązane elementy interfejsu API
connect | () | metoda |
public function connect(host:String, port:int):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Ustanawia połączenie z określonym hostem internetowym za pośrednictwem określonego portu TCP.
Jeśli dla parametru host
określona zostanie wartość null
, połączony host jest tym, w którym znajduje się plik wywołujący metodę XMLSocket.connect()
. Na przykład jeśli wywołujący plik został pobrany ze strony www.adobe.com, określenie wartości null
dla parametru hosta oznacza, że użytkownik zostanie połączony ze stroną www.adobe.com.
Istnieje możliwość zapobieżenia użyciu tej metody w pliku. Należy w tym celu ustawić parametr allowNetworking
znaczników object
oraz embed
na stronie HTML z zawartością SWF.
Więcej informacji zawiera temat Bezpieczeństwo w Centrum programistów programu Flash Player.
Parametry
host:String — Pełna nazwa domeny DNS lub adres IP w postaci 111.222.333.444. Można także określić wartość jako null w celu połączenia się z serwerem hosta, na którym znajdują się pliki SWF. Jeśli plik wywołujący uruchomiony jest w przeglądarce sieci Web, wówczas host musi być w tej samej domenie co plik SWF.
| |
port:int — Numer portu protokołu TCP na docelowym hoście użyty w celu nawiązania połączenia. W programie Flash Player 9.0.124.0 i nowszych wersjach na docelowym hoście musi znajdować się plik reguł gniazd określający, że zezwolono na połączenia gniazd z hosta, na którym znajduje się plik SWF, do określonego portu. We wcześniejszych wersjach programu Flash Player plik reguł gniazd wymagany jest jedynie wtedy, gdy połączenie będzie realizowane na porcie o numerze poniżej 1024, lub gdy połączenie będzie realizowane z hostem innym niż ten, na którym znajduje się plik SWF.
|
Zdarzenia
securityError: — Operacja connect usiłowała połączyć się z hostem spoza obszaru izolowanego obiektu wywołującego lub z portem, który wymaga pliku reguł gniazd. Oba problemy można obejść, używając pliku reguł gniazd na docelowym hoście.
| |
data: — Wywoływane po odebraniu nieprzetworzonych danych.
| |
connect: — Wywoływane po ustanowieniu połączenia sieciowego.
|
Zgłasza
SecurityError — Niezaufane pliki lokalne mogą nie mieć możliwości komunikowania się z Internetem. To ograniczenie można obejść przez ponowne zaklasyfikowanie pliku jako lokalnego z dostępem do sieci lub pliku zaufanego.
| |
SecurityError — Numerem portu gniazda nie może być liczba większa niż 65535.
|
Powiązane elementy interfejsu API
send | () | metoda |
public function send(object:*):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Konwertuje obiekt XML lub dane określone w parametrze object
na ciąg znaków, a następnie przesyła go na serwer (uzupełniając go bajtem zerowym). Jeśli parametr object
jest obiektem XML, ciąg znaków jest tekstową reprezentacją XML obiektu XML. Operacja send jest asynchroniczna i powraca natychmiast, ale dane mogą zostać przesłane w późniejszym czasie. Metoda XMLSocket.send()
nie zwraca wartości wskazującej, czy przesyłanie danych zakończyło się pomyślnie.
Jeśli obiekt XMLSocket nie zostanie podłączony do serwera za pomocą metody XMLSocket.connect()
), operacja XMLSocket.send()
zakończy się niepowodzeniem.
Parametry
object:* — Obiekt XML lub inne dane do przesłania na serwer.
|
Zgłasza
IOError — Obiekt XMLSocket nie jest połączony z serwerem.
|
Powiązane elementy interfejsu API
close | Zdarzenie |
flash.events.Event
właściwość Event.type =
flash.events.Event.CLOSE
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wywoływana, gdy serwer zamyka połączenie z gniazdem. Zdarzenie close
wywoływane jest jedynie wtedy, gdy serwer zamyka połączenie; nie jest wywoływane w wyniku wywołania metodyXMLSocket.close()
.
Event.CLOSE
definiuje wartość właściwości type
obiektu zdarzenia close
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
currentTarget | Obiekt przetwarzający aktywnie obiekt Event za pomocą detektora zdarzeń. |
target | Obiekt, którego połączenie zostało zamknięte. |
connect | Zdarzenie |
flash.events.Event
właściwość Event.type =
flash.events.Event.CONNECT
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wywoływane po pomyślnym wywołaniu metody XMLSocket.connect().
Event.CONNECT
definiuje wartość właściwości type
obiektu zdarzenia connect
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
currentTarget | Obiekt przetwarzający aktywnie obiekt Event za pomocą detektora zdarzeń. |
target | Obiekt Socket lub XMLSocket, który nawiązał połączenie sieciowe. |
data | Zdarzenie |
flash.events.DataEvent
właściwość DataEvent.type =
flash.events.DataEvent.DATA
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wywoływana po wysłaniu lub odbiorze surowych danych.
Definiuje wartość właściwościtype
obiektu zdarzenia data
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
currentTarget | Obiekt przetwarzający aktywnie obiekt Event za pomocą detektora zdarzeń. |
data | Dane surowe wczytane do programu Flash Player lub środowiska Adobe AIR. |
target | Obiekt XMLSocket odbierający dane. |
ioError | Zdarzenie |
flash.events.IOErrorEvent
właściwość IOErrorEvent.type =
flash.events.IOErrorEvent.IO_ERROR
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wywoływana, gdy wystąpi błąd wejścia lub wyjścia uniemożliwiający wysyłanie lub odbieranie danych.
Definiuje wartość właściwościtype
obiektu zdarzenia ioError
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
currentTarget | Obiekt przetwarzający aktywnie obiekt Event za pomocą detektora zdarzeń. |
errorID | Numer referencyjny skojarzony z konkretnym błędem (tylko w środowisku AIR). |
target | Obiekt sieciowy, w którym wystąpił błąd wejścia/wyjścia. |
text | Tekst, który ma być wyświetlany w charakterze komunikatu o błędzie. |
securityError | Zdarzenie |
flash.events.SecurityErrorEvent
właściwość SecurityErrorEvent.type =
flash.events.SecurityErrorEvent.SECURITY_ERROR
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wywoływane, jeśli wywołanie metody XMLSocket.connect()
skutkuje próbą połączenia się z serwerem na zewnątrz obszaru izolowanego lub próbą połączenia się z portem o numerze niższym niż 1024.
SecurityErrorEvent.SECURITY_ERROR
definiuje wartość właściwości type
obiektu zdarzenia securityError
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
currentTarget | Obiekt przetwarzający aktywnie obiekt Event za pomocą detektora zdarzeń. |
target | Obiekt sieciowy zgłaszający błąd zabezpieczeń. |
text | Tekst, który ma być wyświetlany w charakterze komunikatu o błędzie. |
Powiązane elementy interfejsu API
- Konstruktor XMLSocketExample tworzy instancję XMLSocket o nazwie
socket
i przekazujesocket
do metodyConfigureListeners()
(opisanej poniżej) i następnie wywołuje metodęconnect()
instancji XMLSocket korzystając z nazwy hosta „localhost” oraz numeru portu8080
. - Następnie wywoływana jest metoda
configureListeners()
, która dodaje detektory dla każdego z obsługiwanych zdarzeń obiektu XMLSocket:closeHandler()
: wykrywa zdarzenieclose
, które wywoływane jest po zamknięciu połączenia sieciowego.connectHandler()
: wykrywa zdarzenieconnect
, które wywoływane jest po ustanowieniu połączenia.dataHandler()
: wykrywa zdarzeniadata
, ktore wywoływane są za każdym razem, kiedy obiekt XMLSocket otrzyma nowe dane.progressHandler()
: wykrywa zdarzeniaprogress
, które wywoływane w momencie wywołania metodysend()
i w czasie wysyłania.securityErrorHandler()
: wykrywa zdarzeniasecurityError
, które zostaną wywołane, jeśli nastąpi próba uzyskania dostępu do obiektu XMLSocket z niewłaściwym ustawieniem zabezpieczenia odtwarzania lokalnego lub próba użycia portu o numerze niższym niż 1024.ioErrorHandler()
: wykrywa zdarzeniaioError
, które pojawią·się jedynie wtedy, gdy operacja wysyłania lub odbierania danych zakończy się niepowodzeniem.
Uwagi:
- Należy skompilować plik SWF z opcją „Bezpieczeństwo odtwarzania lokalnego” ustawioną na wartość „Tylko dostęp sieciowy”.
- Aby ten przykład zadziałał, potrzebny jest też serwer działający w domenie użytkownika na porcie 8080.
- Jeśli używany jest program Flash Player 9.0.124.0 lub nowsza wersja, wówczas należy umieścić na serwerze użytkownika plik reguł gniazd, który zezwala na nawiązywanie połączeń gniazd z domeny użytkownika na port 8080. Informacje na temat umieszczania plików reguł gniazd znajdują się w temacie centrum informacji dla programistów dotyczącego programu Flash Player: Konfigurowanie serwera plików reguł dotyczącej gniazd.
package { import flash.display.Sprite; import flash.events.*; import flash.net.XMLSocket; public class XMLSocketExample extends Sprite { private var hostName:String = "localhost"; private var port:uint = 8080; private var socket:XMLSocket; public function XMLSocketExample() { socket = new XMLSocket(); configureListeners(socket); if (hostName && port) { socket.connect(hostName, port); } } public function send(data:Object):void { socket.send(data); } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.CLOSE, closeHandler); dispatcher.addEventListener(Event.CONNECT, connectHandler); dispatcher.addEventListener(DataEvent.DATA, dataHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); } private function closeHandler(event:Event):void { trace("closeHandler: " + event); } private function connectHandler(event:Event):void { trace("connectHandler: " + event); } private function dataHandler(event:DataEvent):void { trace("dataHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } } }
Tue Jun 12 2018, 12:06 PM Z