패키지 | flash.net |
클래스 | public class XMLSocket |
상속 | XMLSocket EventDispatcher Object |
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
- XML 메시지는 전이중 TCP/IP 스트림 소켓 연결을 통하여 전송됩니다.
- 각 XML 메시지는 완전한 XML 문서이며 0바이트로 끝납니다.
- 단일 XMLSocket 연결에서 송수신할 수 있는 XML 메시지의 수에는 제한이 없습니다.
XMLSocket 객체와 통신할 서버를 설정하는 작업은 그리 간단하지 않습니다. 응용 프로그램에서 실시간 상호 작용이 필요하지 않다면 XMLSocket 클래스 대신 URLLoader 클래스를 사용합니다.
XMLSocket 클래스의 메서드를 사용하려면 먼저 생성자 new XMLSocket
을 사용하여 XMLSocket 객체를 만들어야 합니다.
local-with-filesystem 샌드박스의 SWF 파일은 소켓을 사용할 수 없습니다.
대상 호스트의 소켓 정책 파일은 SWF 파일에서 소켓 연결을 만들 수 있는 호스트 및 가능한 대상 포트를 지정합니다. Flash Player의 버전이 올라가면서 소켓 정책 파일에 대한 보안 요구 사항이 보다 엄격해졌습니다. 모든 버전의 Flash Player에서 소켓 정책 파일을 사용하는 것이 좋습니다. 소켓 정책 파일이 필수적인 경우도 있습니다. 따라서 XMLSocket 객체를 사용할 때는 필요한 경우 대상 호스트가 소켓 정책 파일을 제공하는지 확인해야 합니다.
다음 목록에서는 여러 버전의 Flash Player에서 소켓 정책 파일에 대한 요구 사항을 보여 줍니다.
- Flash Player 9.0.124.0 이상에서는 모든 XMLSocket 연결에 소켓 정책 파일이 필요합니다. 즉, 연결하는 포트에 관계없이 대상 호스트에 소켓 정책 파일이 있어야 하며, SWF 파일을 제공하는 해당 호스트의 포트에 연결하는 경우에도 마찬가지입니다.
- Flash Player 9.0.115.0 이전 버전에서는 1024보다 낮은 포트 번호에 연결하거나 SWF 파일을 제공하는 호스트와 다른 호스트에 연결하려는 경우 대상 호스트에 소켓 정책 파일이 있어야 합니다.
- Flash Player 9.0.115.0에서는 소켓 정책 파일이 필수적이지 않지만 대상 호스트에서 소켓 정책 파일을 제공하지 않으면 Flash Debug Player를 사용할 때 경고가 표시됩니다.
그러나 Adobe AIR에서 application
보안 샌드박스의 내용, 즉 AIR 응용 프로그램과 함께 설치되는 내용은 이러한 보안 제한에 의해 제한되지 않습니다.
보안에 대한 자세한 내용은 Flash Player 개발자 센터 항목: 보안을 참조하십시오.
관련 API 요소
속성 | 정의 주체 | ||
---|---|---|---|
connected : Boolean [읽기 전용]
이 XMLSocket 객체가 현재 연결되어 있는지 여부를 나타냅니다. | XMLSocket | ||
constructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다. | Object | ||
timeout : int
연결을 기다릴 시간(밀리초)를 나타냅니다. | XMLSocket |
메서드 | 정의 주체 | ||
---|---|---|---|
새 XMLSocket 객체를 만듭니다. | XMLSocket | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
리스너에서 이벤트 알림을 받을 수 있도록 EventDispatcher 객체에 이벤트 리스너 객체를 등록합니다. | EventDispatcher | ||
XMLSocket 객체에 의해 지정된 연결을 종료합니다. | XMLSocket | ||
지정된 TCP 포트를 사용하여 지정된 인터넷 호스트에 연결합니다. | XMLSocket | ||
이벤트를 이벤트 흐름으로 전달합니다. | EventDispatcher | ||
EventDispatcher 객체에 특정 유형의 이벤트에 대한 리스너가 등록되어 있는지 여부를 확인합니다. | EventDispatcher | ||
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다. | Object | ||
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다. | Object | ||
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다. | Object | ||
EventDispatcher 객체에서 리스너를 제거합니다. | EventDispatcher | ||
객체 매개 변수에 지정된 XML 객체 또는 데이터를 문자열로 변환하여 서버로 전송하고, 끝에 0바이트를 붙입니다. | XMLSocket | ||
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다. | Object | ||
로캘별 규칙에 따라 서식이 지정된 이 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 프리미티브 값을 반환합니다. | Object | ||
이 EventDispatcher 객체 또는 조상 객체에 지정한 이벤트 유형에 대한 이벤트 리스너가 등록되어 있는지 여부를 확인합니다. | EventDispatcher |
이벤트 | 요약 | 정의 주체 | ||
---|---|---|---|---|
[브로드캐스트 이벤트] Flash Player 또는 AIR 응용 프로그램이 운영 체제 포커스를 얻어 활성화될 때 전달됩니다. | EventDispatcher | |||
서버가 소켓 연결을 종료할 때 전달됩니다. | XMLSocket | |||
XMLSocket.connect() 메서드에 대한 호출이 성공한 경우에 전달됩니다. | XMLSocket | |||
원시 데이터를 전송하거나 수신한 후에 전달됩니다. | XMLSocket | |||
[브로드캐스트 이벤트] Flash Player 또는 AIR 응용 프로그램이 운영 체제 포커스를 잃고 비활성화될 때 전달됩니다. | EventDispatcher | |||
전송 또는 수신 작업의 실패를 유발하는 입력/출력 오류가 발생할 때 전달됩니다. | XMLSocket | |||
XMLSocket.connect() 메서드 호출로 호출자의 보안 샌드박스 외부에 있는 서버 또는 1024 미만의 포트에 대한 연결을 시도하면 전달됩니다. | XMLSocket |
connected | 속성 |
timeout | 속성 |
XMLSocket | () | 생성자 |
public function XMLSocket(host:String = null, port:int = 0)
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
새 XMLSocket 객체를 만듭니다. 매개 변수가 지정되지 않은 경우 처음에는 연결 해제된 소켓이 만들어집니다. 매개 변수가 지정되면 지정된 호스트 및 포트와의 연결이 시도됩니다.
참고: 생성자의 매개 변수가 없는 형태를 사용한 다음 이벤트 리스너를 추가하고 connect
메서드(host
및 port
매개 변수 사용)를 호출하는 것이 좋습니다. 이 순서대로 하면 모든 이벤트 리스너가 정상적으로 작동합니다.
host:String (default = null ) — 정규화된 DNS 도메인 이름 또는 .222.333.444 형식의 IP 주소입니다. Flash Player 9.0.115.0 이상 및 AIR 1.0 이상에서는 IPv6 주소(예: rtmp://[2001:db8:ccc3:ffff:0:444d:555e:666f])도 지정할 수 있습니다. null 을 지정하여 SWF 파일이 있는 호스트 서버에 연결할 수도 있습니다. 이 호출을 수행하는 SWF 파일이 웹 브라우저에서 실행 중인 경우, host 는 해당 SWF 파일과 같은 도메인에 속해야 합니다.
| |
port:int (default = 0 ) — 연결 설정에 사용되는 대상 호스트의 TCP 포트 번호입니다. Flash Player 9.0.124.0 이상에서는 SWF 파일을 제공하는 호스트에서 지정된 포트로 소켓 연결이 허용됨을 지정하는 소켓 정책 파일을 대상 호스트에서 제공해야 합니다. 이전 버전의 Flash Player에서는 1024보다 낮은 포트 번호에 연결하거나 SWF 파일을 제공하는 호스트와 다른 호스트에 연결할 때만 소켓 정책 파일이 필요합니다.
|
관련 API 요소
close | () | 메서드 |
connect | () | 메서드 |
public function connect(host:String, port:int):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
지정된 TCP 포트를 사용하여 지정된 인터넷 호스트에 연결합니다.
host
매개 변수에 대해 null
을 지정하면 연결된 호스트는 XMLSocket.connect()
를 호출하는 파일이 있는 호스트입니다. 예를 들어 www.adobe.com에서 파일을 다운로드한 경우 host 매개 변수에 null
을 지정하면 www.adobe.com에 연결하게 됩니다.
SWF 내용이 들어 있는 HTML 페이지에서 allowNetworking
매개 변수(object
및 embed
태그)를 설정하여 SWF 파일에서 이 메서드를 사용하지 않게 할 수 있습니다.
자세한 내용은 Flash Player 개발자 센터 항목(보안)을 참조하십시오.
매개 변수
host:String — 정규화된 DNS 도메인 이름 또는 111.222.333.444 형식의 IP 주소입니다. null 을 지정하여 SWF 파일이 있는 호스트 서버에 연결할 수도 있습니다. 호출하는 파일이 웹 브라우저에서 실행 중인 SWF 파일인 경우 host 는 호출하는 파일과 같은 도메인에 속해야 합니다.
| |
port:int — 연결 설정에 사용되는 대상 호스트의 TCP 포트 번호입니다. Flash Player 9.0.124.0 이상에서는 SWF 파일을 제공하는 호스트에서 지정된 포트로 소켓 연결이 허용됨을 지정하는 소켓 정책 파일을 대상 호스트에서 제공해야 합니다. 이전 버전의 Flash Player에서는 1024보다 낮은 포트 번호에 연결하거나 SWF 파일을 제공하는 호스트와 다른 호스트에 연결할 때만 소켓 정책 파일이 필요합니다.
|
이벤트
securityError: — 호출자의 보안 샌드박스 외부의 호스트 또는 소켓 정책 파일이 필요한 포트에 연결하려고 했습니다. 대상 호스트에서 소켓 정책 파일을 사용하면 두 문제를 모두 해결할 수 있습니다.
| |
data: — 원시 데이터를 수신하면 전달됩니다.
| |
connect: — 네트워크 연결이 설정되면 전달됩니다.
|
오류
SecurityError — 신뢰할 수 없는 로컬 파일은 인터넷 통신이 불가능합니다. 이 파일을 네트워킹 가능한 로컬 파일(local-with-networking) 또는 신뢰할 수 있는 파일로 다시 규정하면 이 오류를 해결할 수 있습니다.
| |
SecurityError — 65535보다 큰 소켓 포트는 지정할 수 없습니다.
|
관련 API 요소
send | () | 메서드 |
public function send(object:*):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
object
매개 변수에 지정된 XML 객체 또는 데이터를 문자열로 변환하여 서버로 전송하고, 끝에 0바이트를 붙입니다. object
가 XML 객체인 경우 문자열은 XML 객체의 XML 텍스트 표현입니다. 보내기 작업은 비동기적입니다. 따라서 즉시 반환하지만 데이터는 나중에 전송될 수 있습니다. XMLSocket.send()
메서드는 데이터가 성공적으로 전송되었는지 여부를 나타내는 값을 반환하지 않습니다.
XMLSocket.connect()
를 사용하여 XMLSocket 객체를 서버에 연결하지 않는 경우, XMLSocket.send()
작업에 실패합니다.
매개 변수
object:* — 서버로 전송할 XML 객체 또는 다른 데이터입니다.
|
오류
IOError — XMLSocket 객체가 서버와 연결되지 않았습니다.
|
관련 API 요소
close | 이벤트 |
flash.events.Event
속성 Event.type =
flash.events.Event.CLOSE
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
서버가 소켓 연결을 종료할 때 전달됩니다. close
이벤트는 서버가 연결을 종료할 때만 전달됩니다. XMLSocket.close()
메서드를 호출할 때는 전달되지 않습니다.
Event.CLOSE
상수는 close
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
target | 연결이 종료된 객체입니다. |
connect | 이벤트 |
flash.events.Event
속성 Event.type =
flash.events.Event.CONNECT
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
XMLSocket.connect()
메서드에 대한 호출이 성공하면 전달됩니다.
Event.CONNECT
상수는 connect
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
target | 네트워크 연결을 설정한 Socket 또는 XMLSocket 객체입니다. |
data | 이벤트 |
flash.events.DataEvent
속성 DataEvent.type =
flash.events.DataEvent.DATA
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
원시 데이터를 전송하거나 수신한 후에 전달됩니다.
data
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
data | Flash Player 또는 Adobe AIR에 로드된 원시 데이터입니다. |
target | 데이터를 수신하는 XMLSocket 객체입니다. |
ioError | 이벤트 |
flash.events.IOErrorEvent
속성 IOErrorEvent.type =
flash.events.IOErrorEvent.IO_ERROR
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
전송 또는 수신 작업의 실패를 유발하는 입력/출력 오류가 발생할 때 전달됩니다.
ioError
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
errorID | 특정 오류와 연결된 참조 번호입니다(AIR만 해당). |
target | 입력/출력 오류가 발생한 네트워크 객체입니다. |
text | 오류 메시지로 표시될 텍스트입니다. |
securityError | 이벤트 |
flash.events.SecurityErrorEvent
속성 SecurityErrorEvent.type =
flash.events.SecurityErrorEvent.SECURITY_ERROR
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
XMLSocket.connect()
메서드 호출로 호출자의 보안 샌드박스 외부에 있는 서버 또는 1024 미만의 포트에 대한 연결을 시도하면 전달됩니다.
SecurityErrorEvent.SECURITY_ERROR
상수는 securityError
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
target | 보안 오류를 보고하는 네트워크 객체입니다. |
text | 오류 메시지로 표시될 텍스트입니다. |
관련 API 요소
- XMLSocketExample 생성자는
socket
이라는 이름의 XMLSocket 인스턴스를 만들고socket
을ConfigureListeners()
에 전달한 다음(아래 참조) 호스트 이름 "localhost"와 포트 번호8080
을 사용하여 XMLSocket의connect()
메서드를 호출합니다. configureListeners()
메서드가 호출되어 지원되는 각 XMLSocket 이벤트에 대해 리스너를 추가합니다.closeHandler()
:close
이벤트를 수신합니다. 이 이벤트는 네트워크 연결이 종료된 후 전달됩니다.connectHandler()
:connect
이벤트를 수신합니다. 이 이벤트는 네트워크 연결이 설정되면 전달됩니다.dataHandler()
:data
이벤트를 수신합니다. 이 이벤트는 XMLSocket이 새 데이터를 받을 때마다 전달됩니다.progressHandler()
:progress
이벤트를 수신합니다. 이 이벤트는send()
를 호출하여 전송이 진행되는 동안에 전달됩니다.securityErrorHandler()
:securityError
이벤트를 수신합니다. 이 이벤트는 잘못된 로컬 재생 보안 설정으로 또는 1024 미만의 포트 번호를 사용하여 XMLSocket에 액세스하려고 할 때 전달됩니다.ioErrorHandler()
:ioError
이벤트를 수신합니다. 이 이벤트는 데이터 전송 또는 수신 작업에 실패했을 때만 전달됩니다.
참고:
- "로컬 재생 보안"을 "네트워크에만 액세스"로 설정하여 SWF 파일을 컴파일해야 합니다.
- 이 예제가 실행되려면 도메인에서 포트 8080을 사용하여 서버가 실행 중이어야 합니다.
- Flash Player 9.0.124.0 이상을 실행하는 경우 해당 도메인에서 포트 8080으로 소켓 연결을 허용하는 소켓 정책 파일을 서버에 배치해야 합니다. 소켓 정책 파일 제공에 대한 자세한 내용은 Flash Player 개발자 센터 항목인 소켓 정책 파일 서버 설정을 참조하십시오.
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, 03:17 PM Z