패키지flash.net
클래스public class XMLSocket
상속XMLSocket Inheritance EventDispatcher Inheritance Object

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

XMLSocket 클래스는 Flash Player를 실행하는 컴퓨터가 IP 주소 또는 도메인 이름으로 식별되는 서버 컴퓨터와 통신할 수 있도록 하는 클라이언트 소켓을 구현합니다. XMLSocket 클래스는 실시간 채팅 시스템과 같이 지연 시간이 낮아야 하는 클라이언트 서버 응용 프로그램에 유용합니다. 전통적인 HTTP 기반 채팅 솔루션은 빈번하게 서버를 방문하여 HTTP 요청을 사용해 새로운 메시지를 다운로드합니다. 반면에, XMLSocket 채팅 솔루션은 서버와의 연결을 유지하여 클라이언트가 요청하지 않아도 서버에 들어오는 메시지를 서버가 즉시 전송할 수 있도록 합니다. XMLSocket 클래스를 사용하려면 XMLSocket 클래스에 사용된 프로토콜을 이해할 수 있는 데몬이 서버 컴퓨터에서 실행되고 있어야 합니다. 다음 목록에는 이 프로토콜이 설명되어 있습니다.

XMLSocket.connect() 메서드는 1024 이상의 TCP 포트 번호에만 연결할 수 있습니다. 이 제한 사항 때문에 XMLSocket 객체와 통신하는 서버 데몬 역시 1024 이상의 포트 번호에 할당되어야 합니다. 1024보다 작은 포트 번호는 주로 FTP, Telnet, HTTP 등과 같은 시스템 서비스에 사용되므로, 보안 문제 때문에 XMLSocket 객체가 이러한 포트를 사용하지 못하도록 차단한 것입니다. 이렇게 포트 번호를 제한함으로써 포트 번호가 잘못 사용될 가능성을 줄일 수 있습니다.

XMLSocket 객체와 통신할 서버를 설정하는 작업은 그리 간단하지 않습니다. 응용 프로그램에서 실시간 상호 작용이 필요하지 않다면 XMLSocket 클래스 대신 URLLoader 클래스를 사용합니다. XMLSocket 클래스의 메서드를 사용하려면 먼저 생성자 new XMLSocket을 사용하여 XMLSocket 객체를 만들어야 합니다.

이 클래스를 사용할 경우 다음과 같은 Flash Player 보안 모델을 생각해 볼 수 있습니다.

자세한 내용은 다음을 참조하십시오.

예제를 통해 확인하십시오.

참고 사항

flash.net.URLLoader.load()
flash.net.URLLoader
소켓 연결


Public 속성
 속성다음에 의해 정의됨
  connected : Boolean
[read-only] 이 XMLSocket 객체가 현재 연결되어 있는지 여부를 나타냅니다.
XMLSocket
 Inheritedconstructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다.
Object
 Inheritedprototype : Object
[static] 클래스 또는 함수 객체의 프로토타입 객체에 대한 참조입니다.
Object
Public 메서드
 메서드다음에 의해 정의됨
  
XMLSocket(host:String = null, port:int = 0)
새 XMLSocket 객체를 만듭니다.
XMLSocket
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
리스너에서 이벤트 알림을 받을 수 있도록 EventDispatcher 객체에 이벤트 리스너 객체를 등록합니다.
EventDispatcher
  
XMLSocket 객체에 의해 지정된 연결을 종료합니다.
XMLSocket
  
connect(host:String, port:int):void
지정된 TCP 포트를 사용하여 지정된 인터넷 호스트에 연결합니다.
XMLSocket
 Inherited
이벤트를 이벤트 흐름으로 전달합니다.
EventDispatcher
 Inherited
EventDispatcher 객체에 특정 유형의 이벤트에 대한 리스너가 등록되어 있는지 여부를 확인합니다.
EventDispatcher
 Inherited
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다.
Object
 Inherited
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다.
Object
 Inherited
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다.
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher 객체에서 리스너를 제거합니다.
EventDispatcher
  
send(object:*):void
객체 매개 변수에 지정된 XML 객체 또는 데이터를 문자열로 변환하여 서버로 전송하고, 끝에 0바이트를 붙입니다.
XMLSocket
 Inherited
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다.
Object
 Inherited
지정된 객체의 문자열 표현을 반환합니다.
Object
 Inherited
지정된 객체의 프리미티브 값을 반환합니다.
Object
 Inherited
이 EventDispatcher 객체 또는 조상 객체에 지정한 이벤트 유형에 대한 이벤트 리스너가 등록되어 있는지 여부를 확인합니다.
EventDispatcher
이벤트
 이벤트 요약 다음에 의해 정의됨
 Inherited Flash Player가 운영 체제에서 포커스를 얻어 활성화될 때 전달됩니다.EventDispatcher
   서버가 소켓 연결을 종료할 때 전달됩니다.XMLSocket
   XMLSocket.connect() 메서드에 대한 호출이 성공한 경우에 전달됩니다.XMLSocket
   원시 데이터를 전송하거나 수신한 후에 전달됩니다.XMLSocket
 Inherited Flash Player가 운영 체제에서 포커스를 잃고 비활성화될 때 전달됩니다.EventDispatcher
   전송 또는 수신 작업의 실패를 유발하는 입력/출력 오류가 발생할 때 전달됩니다.XMLSocket
   XMLSocket.connect() 메서드 호출로 호출자의 보안 샌드박스 외부에 있는 서버 또는 1024 미만의 포트에 대한 연결을 시도할 때 전달됩니다.XMLSocket
속성 정보
connected속성
connected:Boolean  [read-only]

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

이 XMLSocket 객체가 현재 연결되어 있는지 여부를 나타냅니다. 또한 connect 이벤트 및 ioError 이벤트에 등록하여 연결 성공 여부를 확인할 수 있습니다.


구현
    public function get connected():Boolean

참고 사항

생성자 정보
XMLSocket()생성자
public function XMLSocket(host:String = null, port:int = 0)

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

새 XMLSocket 객체를 만듭니다. XMLSocket 객체는 처음에 어떠한 서버에도 연결되어 있지 않습니다. 객체를 서버에 연결하려면 XMLSocket.connect() 메서드를 호출해야 합니다.

매개 변수
host:String (default = null) — 정규화된 DNS 도메인 이름 또는 aaa.bbb.ccc.ddd 형식의 IP 주소입니다. null을 지정하여 SWF 파일이 있는 호스트 서버에 연결할 수도 있습니다. 이 호출을 수행하는 SWF 파일이 웹 브라우저에서 실행 중인 경우, host는 해당 SWF 파일과 같은 도메인에 속해야 합니다.
 
port:int (default = 0) — 연결 설정에 사용되는 호스트의 TCP 포트 번호입니다. 정책 파일을 사용하지 않는 한 포트 번호는 1024 이상이어야 합니다.

참고 사항

메서드 정보
close()메서드
public function close():void

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

XMLSocket 객체에 의해 지정된 연결을 종료합니다. close 이벤트는 서버가 연결을 종료할 때만 전달됩니다. close() 메서드를 호출할 때는 전달되지 않습니다.

참고 사항

connect()메서드 
public function connect(host:String, port:int):void

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

지정된 TCP 포트를 사용하여 지정된 인터넷 호스트에 연결합니다. 정책 파일을 사용 중이 아니라면, 기본적으로 포트 1024 이상에만 연결할 수 있습니다.

host 매개 변수에 대해 null을 지정하면 연결된 호스트는 XMLSocket.connect()를 호출하는 SWF 파일이 있는 호스트입니다. 예를 들어, SWF 파일이 www.adobe.com에서 다운로드된 경우 호스트 매개 변수로 null을 지정하면 www.adobe.com의 IP 주소를 입력하는 것과 같습니다.

SWF 파일이 실행되고 있는 Flash Player의 버전이 7보다 낮은 경우, host는 이 호출을 수행한 SWF 파일과 동일한 수퍼 도메인에 있어야 합니다. 예를 들어, www.adobe.com의 SWF 파일은 store.adobe.com의 SWF 파일로부터 변수를 받거나 보낼 수 있습니다. 두 파일 모두 adobe.com이라는 동일한 수퍼 도메인에 위치하기 때문입니다.

SWF 파일이 실행되고 있는 Flash Player의 버전이 7 이상인 경우, host는 정확하게 동일한 도메인에 있어야 합니다. 예를 들어, www.adobe.com에 있는 어떤 SWF 파일이 Flash Player 5용으로 제작되었지만 Flash Player 7 이상에서 실행 중인 경우, 이 SWF 파일은 www.adobe.com에 있는 SWF 파일에서만 변수를 받거나 보낼 수 있습니다. 다른 도메인에서 변수를 받거나 보내려면 액세스하려는 SWF 파일을 호스팅하는 서버에 크로스 도메인 정책 파일이 존재해야 합니다.

SWF 내용을 포함하는 HTML 페이지에서 objectembed 태그의 allowNetworking 매개 변수를 설정하여 SWF 파일에서 이 메서드를 사용하지 못하도록 할 수 있습니다.

자세한 내용은 다음을 참조하십시오.

매개 변수

host:String — 정규화된 DNS 도메인 이름 또는 aaa.bbb.ccc.ddd 형식의 IP 주소입니다. null을 지정하여 SWF 파일이 있는 호스트 서버에 연결할 수도 있습니다. 이 호출을 수행하는 SWF 파일이 웹 브라우저에서 실행 중인 경우, host는 해당 SWF 파일과 같은 도메인에 속해야 합니다.
 
port:int — 연결 설정에 사용되는 호스트의 TCP 포트 번호입니다. 정책 파일을 사용하지 않는 한 포트 번호는 1024 이상이어야 합니다.


이벤트
securityError:SecurityErrorEvent — 호출자의 보안 샌드박스 외부의 서버 및/또는 1024보다 작은 포트와 연결하려는 작업이 시도되었습니다. 서버에서 XMLSocket 정책 파일을 사용하면 두 문제 모두 해결할 수 있습니다.
 
data:DataEvent — 원시 데이터를 수신하면 전달됩니다.
 
connect:Event — 네트워크 연결이 설정되면 전달됩니다.

오류
SecurityError — 신뢰할 수 없는 로컬 SWF 파일은 인터넷 통신이 불가능합니다. 이 SWF 파일을 네트워킹 가능한 로컬 파일(local-with-networking) 또는 신뢰할 수 있는 파일로 다시 규정하면 이 오류를 해결할 수 있습니다.
 
SecurityError — 65535보다 큰 소켓 포트는 지정할 수 없습니다.

참고 사항

send()메서드 
public function send(object:*):void

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

object 매개 변수에 지정된 XML 객체 또는 데이터를 문자열로 변환하여 서버로 전송하고, 끝에 0바이트를 붙입니다. object가 XML 객체인 경우 문자열은 XML 객체의 XML 텍스트 표현입니다. 보내기 작업은 비동기적입니다. 따라서 즉시 반환하지만 데이터는 나중에 전송될 수 있습니다. XMLSocket.send() 메서드는 데이터가 성공적으로 전송되었는지 여부를 나타내는 값을 반환하지 않습니다.

XMLSocket.connect()를 사용하여 XMLSocket 객체를 서버에 연결하지 않는 경우, XMLSocket.send() 작업에 실패합니다.

매개 변수

object:* — 서버로 전송할 XML 객체 또는 다른 데이터입니다.


오류
IOError — XMLSocket 객체가 서버와 연결되지 않았습니다.

참고 사항

이벤트 정보
close 이벤트
이벤트 객체 유형: flash.events.Event
Event.type property = flash.events.Event.CLOSE

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

서버가 소켓 연결을 종료할 때 전달됩니다. close 이벤트는 서버가 연결을 종료할 때만 전달됩니다. XMLSocket.close() 메서드를 호출할 때는 전달되지 않습니다.

close 이벤트 객체의 type 속성 값을 정의합니다.

이 이벤트에는 다음과 같은 속성이 있습니다.

속성
bubblesfalse
cancelablefalse; 취소할 기본 비헤이비어가 없습니다.
currentTarget현재 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다.
target연결이 종료된 객체입니다.
connect 이벤트  
이벤트 객체 유형: flash.events.Event
Event.type property = flash.events.Event.CONNECT

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

XMLSocket.connect() 메서드에 대한 호출이 성공하면 전달됩니다.

connect 이벤트 객체의 type 속성 값을 정의합니다.

이 이벤트에는 다음과 같은 속성이 있습니다.

속성
bubblesfalse
cancelablefalse; 취소할 기본 비헤이비어가 없습니다.
currentTarget현재 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다.
target네트워크 연결을 설정한 Socket 또는 XMLSocket 객체입니다.
data 이벤트  
이벤트 객체 유형: flash.events.DataEvent
DataEvent.type property = flash.events.DataEvent.DATA

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

원시 데이터를 전송하거나 수신한 후에 전달됩니다.

data 이벤트 객체의 type 속성 값을 정의합니다.

이 이벤트에는 다음과 같은 속성이 있습니다.

속성
bubblesfalse
cancelablefalse; 취소할 기본 비헤이비어가 없습니다.
currentTarget현재 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다.
dataFlash Player에 로드된 원시 데이터입니다.
target데이터를 수신하는 XMLSocket 객체입니다.
ioError 이벤트  
이벤트 객체 유형: flash.events.IOErrorEvent
IOErrorEvent.type property = flash.events.IOErrorEvent.IO_ERROR

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

전송 또는 수신 작업의 실패를 유발하는 입력/출력 오류가 발생할 때 전달됩니다.

ioError 이벤트 객체의 type 속성 값을 정의합니다.

이 이벤트에는 다음과 같은 속성이 있습니다.

속성
bubblesfalse
cancelablefalse; 취소할 기본 비헤이비어가 없습니다.
currentTarget현재 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다.
target입력/출력 오류가 발생한 네트워크 객체입니다.
text오류 메시지로 표시될 텍스트입니다.
securityError 이벤트  
이벤트 객체 유형: flash.events.SecurityErrorEvent
SecurityErrorEvent.type property = flash.events.SecurityErrorEvent.SECURITY_ERROR

언어 버전 : ActionScript 3.0
Player 버전 : Flash Player 9

XMLSocket.connect() 메서드 호출로 호출자의 보안 샌드박스 외부에 있는 서버 또는 1024 미만의 포트에 대한 연결을 시도하면 전달됩니다.

SecurityErrorEvent.SECURITY_ERROR 상수는 securityError 이벤트 객체의 type 속성 값을 정의합니다.

이 이벤트에는 다음과 같은 속성이 있습니다.

속성
bubblesfalse
cancelablefalse; 취소할 기본 비헤이비어가 없습니다.
currentTarget현재 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다.
target보안 오류를 보고하는 네트워크 객체입니다.
text오류 메시지로 표시될 텍스트입니다.

참고 사항

예제 예제 사용 방법
XMLSocketExample.as

다음 예제에서는 XMLSocketExample 클래스를 사용하여 XMLSocket 이벤트 중 XMLSocket 연결을 통해 데이터를 전송하고 정보를 출력합니다. 이는 다음 단계로 이루어집니다.
  1. XMLSocketExample 생성자는 socket이라는 이름의 XMLSocket 인스턴스를 만들고 socketConfigureListeners()에 전달한 다음(아래 참조) 호스트 이름 "localhost"와 포트 번호 8080을 사용하여 XMLSocket의 connect() 메서드를 호출합니다.
  2. configureListeners() 메서드가 호출되어 지원되는 각 XMLSocket 이벤트에 대해 리스너를 추가합니다.
    • closeHandler(): close 이벤트를 수신합니다. 이 이벤트는 네트워크 연결이 종료된 후 전달됩니다.
    • connectHandler(): connect 이벤트를 수신합니다. 이 이벤트는 네트워크 연결이 설정되면 전달됩니다.
    • dataHandler(): data 이벤트를 수신합니다. 이 이벤트는 XMLSocket이 새 데이터를 받을 때마다 전달됩니다.
    • progressHandler(): progress 이벤트를 수신합니다. 이 이벤트는 send()를 호출하여 전송이 진행되는 동안에 전달됩니다.
    • securityErrorHandler(): securityError 이벤트를 수신합니다. 이 이벤트는 잘못된 로컬 재생 보안 설정으로 또는 1024 미만의 포트 번호를 사용하여 XMLSocket에 액세스하려고 할 때 전달됩니다.
    • ioErrorHandler(): ioError 이벤트를 수신합니다. 이 이벤트는 데이터 전송 또는 수신 작업에 실패했을 때만 전달됩니다.

참고:


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);
            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);
        }
    }
}




 

이 페이지에 의견 추가되면 전자 메일 알림 받기 | 의견 보고서

현재 페이지: http://livedocs.adobe.com/flash/9.0_kr/ActionScriptLangRefV3/flash/net/XMLSocket.html