네트워킹 및 통신의 기초



네트워킹 및 통신 소개

복잡한 ActionScript 응용 프로그램을 작성할 때 서버측 스크립트와 통신하거나 외부 XML 또는 텍스트 파일에서 데이터를 로드해야 하는 경우가 자주 있습니다. flash.net 패키지에는 원격 URL에서 내용을 로드하고 다른 Flash Player 또는 AIR 인스턴스와 통신하며 원격 웹 사이트에 연결하는 등 인터넷을 통해 데이터를 송수신할 수 있는 클래스가 포함되어 있습니다.

ActionScript 3.0에서는 URLLoader 및 URLRequest 클래스를 사용하여 외부 파일을 로드할 수 있습니다. 그런 다음 로드된 데이터 유형에 따라 특정 클래스를 사용하여 데이터에 액세스할 수 있습니다. 예를 들어 원격 내용이 이름-값 쌍 형식으로 지정된 경우 URLVariables 클래스를 사용하여 서버 결과를 구문 분석합니다. 그렇지 않고 URLLoader 및 URLRequest 클래스를 사용하여 로드된 파일이 원격 XML 문서인 경우, XML 클래스의 생성자, XMLDocument 클래스의 생성자 또는 XMLDocument.parseXML() 메서드를 사용하여 XML 문서를 구문 분석할 수 있습니다. 그러면 URLVariables, XML 또는 원격 데이터의 구문 분석 및 작업에 사용하는 다른 클래스 중 어떤 것을 사용하는지에 관계없이 외부 파일을 로드하는 코드가 동일하므로 ActionScript 코드를 단순화할 수 있습니다.

flash.net 패키지에는 다른 유형의 원격 통신을 위한 클래스도 들어 있습니다. 여기에는 서버에서 파일을 업로드하고 다운로드할 수 있는 FileReference 클래스, 소켓 연결을 통해 원격 컴퓨터와 직접 통신할 수 있는 Socket 및 XMLSocket 클래스, Flash 전용 서버 리소스(예: Flash Media Server 및 Flash Remoting Server)와 통신하고 비디오 파일을 로드하는 데 사용되는 NetConnection 및 NetStream 클래스 등이 포함됩니다.

마지막으로 flash.net 패키지에는 사용자의 로컬 컴퓨터에서 통신하는 데 필요한 클래스가 들어 있습니다. 한 대의 컴퓨터에서 실행되는 둘 이상의 SWF 파일 간에 통신을 가능하게 하는 LocalConnection 클래스와, 사용자의 컴퓨터에 데이터를 저장하고 나중에 해당 데이터가 응용 프로그램에 반환될 때 검색할 수 있도록 하는 SharedObject 클래스 등이 여기에 포함됩니다.

일반적인 네트워킹 및 통신 작업

다음은 ActionScript에서의 외부 통신과 관련하여 실행할 수 있는 가장 일반적인 작업으로, 이 장에서 설명하는 내용입니다.

  • 외부 파일 또는 서버 스크립트에서 데이터 로드

  • 서버 스크립트에 데이터 보내기

  • 다른 로컬 SWF 파일과 통신

  • 이진 소켓 연결을 사용한 작업

  • XML 소켓으로 통신

  • 영구 로컬 데이터 저장

  • 서버에 파일 업로드

  • 서버에서 사용자의 컴퓨터로 파일 다운로드

중요한 개념 및 용어

다음 참조 목록에는 이 장에 사용된 중요한 용어가 포함되어 있습니다.

  • 외부 데이터: SWF 파일 외부의 일부 양식에 저장되는 데이터로, 필요할 때 SWF 파일로 로드됩니다. 이 데이터는 직접 로드한 파일에 저장하거나, 서버에서 실행되는 스크립트나 프로그램을 호출하여 가져온 데이터베이스나 다른 양식에 저장할 수 있습니다.

  • URL 인코딩된 변수: URL 인코딩 형식을 사용하면 여러 가지 변수(변수 이름 및 값 쌍)를 하나의 텍스트 문자열로 나타낼 수 있습니다. 개별 변수는 name=value 형식으로 작성됩니다. 각 변수(이름-값 쌍)는 앰퍼샌드 문자(예: variable1=value1&variable2=value2)로 구분됩니다. 이러한 방법으로 무제한의 변수를 하나의 메시지로 보낼 수 있습니다.

  • MIME 형식: 인터넷 통신에서 제공된 파일 유형을 확인하는 데 사용되는 표준 코드입니다. 모든 파일 유형에는 해당 유형을 식별하는 데 사용되는 특정 코드가 있습니다. 컴퓨터(예: 웹 서버 또는 사용자의 Flash Player 또는 AIR 인스턴스)에서 파일 또는 메시지를 보낼 때는 보내는 파일 유형을 지정합니다.

  • HTTP(Hypertext Transfer Protocol): 인터넷을 통해 전송되는 웹 페이지 및 다양한 유형의 기타 내용을 전달하기 위한 표준 형식입니다.

  • 요청 메서드: Flash Player 또는 웹 브라우저 같은 프로그램에서 메시지(HTTP 요청이라고 함)를 웹 서버에 보낼 때 전송되는 모든 데이터는 GET과 POST의 두 가지 요청 메서드 중 한 가지 방식을 사용하여 요청에 포함될 수 있습니다. 서버 끝에서 요청을 받는 프로그램은 데이터를 찾기 위해 요청의 적절한 부분을 조회해야 하므로, ActionScript에서 데이터를 보내는 데 사용되는 요청 메서드는 서버에서 해당 데이터를 읽을 때 사용되는 요청 메서드와 일치해야 합니다.

  • 소켓 연결: 두 컴퓨터 간의 통신을 위한 영구 연결입니다.

  • 업로드: 파일을 다른 컴퓨터로 보냅니다.

  • 다운로드: 다른 컴퓨터에서 파일을 가져옵니다.

IPv6 주소를 사용한 작업

Flash Player 9.0.115.0 이상에서는 IPv6(Internet Protocol version 6)을 지원합니다. IPv6은 128비트 주소를 지원하는 인터넷 프로토콜입니다(이전에 32비트 주소 체계를 지원하는 IPv4를 개선한 새 버전). 네트워크 인터페이스에서 IPv6를 활성화시켜야 합니다. 자세한 내용은 데이터를 호스팅하는 운영 체제의 도움말을 참조하십시오.

호스팅 시스템이 IPv6을 지원하면 다음과 같이 대괄호([])로 묶은 URL에 IPv6 리터럴 주소를 지정할 수 있습니다.

rtmp://[2001:db8:ccc3:ffff:0:444d:555e:666f]:1935/test

Flash Player에서는 다음 규칙에 따라 리터럴 IPv6 값을 반환합니다.

  • Flash Player에서는 IPv6 주소에 대해 긴 형식의 문자열을 반환합니다.

  • IP 값에는 콜론이 두 개인 약어가 없습니다.

  • 16진수는 소문자로만 사용됩니다.

  • IPv6 주소는 대괄호([])로 묶습니다.

  • 각 주소는 0~4개의 16진수로 출력됩니다. 이때 선행 0은 생략됩니다.

  • 다음 예외를 제외하고 모든 0의 주소는 이중 콜론이 아닌 단일 0으로 출력됩니다.

Flash Player에서 반환되는 IPv6 값에는 다음과 같은 예외가 있습니다.

  • 지정되지 않은 IPv6 주소(모든 0)는 [::]으로 출력됩니다.

  • 루프백 또는 로컬 호스트 IPv6 주소는 [::1]로 출력됩니다.

  • IPv4 매핑 주소(IPv6으로 변환된 주소)는 [::ffff:a.b.c.d]로 출력됩니다. 여기서 a.b.c.d는 점으로 구분된 일반적인 IPv4 값입니다.

  • IPv4 호환 주소는 [::a.b.c.d]로 출력됩니다. 여기서 a.b.c.d는 점으로 구분된 일반적인 IPv4 값입니다.

이 장의 예제를 사용하여 작업

장의 내용을 따라 작업하면서 예제 코드 샘플을 직접 테스트할 수 있습니다. 이 장의 코드 샘플 중 일부는 외부 데이터를 로드하거나 다른 유형의 통신을 수행합니다. 이러한 예제에 trace() 함수 호출이 포함되어 예제 실행 결과를 [출력] 패널에 표시하는 경우도 있습니다. 다른 예제에서는 실제로 몇 가지 기능(예: 서버에 파일 업로드)을 수행합니다. 이러한 예제를 테스트하려면 SWF와 상호 작용하고 해당 예제가 요청된 작업을 수행하는지 확인해야 합니다.

코드 예제는 두 가지 범주로 구분됩니다. 예제 샘플 중 일부는 코드가 독립 실행형 스크립트인 경우(예: Flash 문서의 키프레임에 첨부된 상태)를 가정하여 작성되었습니다. 이러한 예제를 테스트하려면:

  1. 새 Flash 문서를 만듭니다.

  2. 타임라인의 프레임 1에서 키프레임을 선택하고 [액션] 패널을 엽니다.

  3. [스크립트] 창에 코드 샘플을 복사합니다.

  4. 주 메뉴에서 [컨트롤] > [무비 테스트]를 선택하여 SWF 파일을 만들고 예제를 테스트합니다.

다른 예제 코드 샘플은 클래스로 작성되었으며 예제 클래스가 Flash 문서에 대한 문서 클래스의 역할을 수행합니다. 이러한 예제를 테스트하려면:

  1. 빈 Flash 문서를 만들어 컴퓨터에 저장합니다.

  2. 새 ActionScript 파일을 만들고 Flash 문서와 같은 디렉토리에 저장합니다. 파일 이름은 코드 샘플에 있는 클래스의 이름과 일치해야 합니다. 예를 들어 코드 샘플에 "UploadTest"라는 클래스가 정의된 경우 ActionScript 파일을 "UploadTest.as"로 저장합니다.

  3. ActionScript 파일에 코드 샘플을 복사하고 파일을 저장합니다.

  4. Flash 문서에서 스테이지 또는 페이스트보드의 빈 부분을 클릭하여 문서 속성 관리자를 활성화합니다.

  5. 텍스트에서 복사한 ActionScript 클래스의 이름을 속성 관리자의 [문서 클래스] 필드에 입력합니다.

  6. [컨트롤] > [무비 테스트]를 사용하여 프로그램을 실행하고 예제를 테스트합니다.

마지막으로 이 장의 일부 예제는 서버에서 실행되는 프로그램과 상호 작용합니다. 이러한 예제에는 예제 테스트에 필요한 서버 프로그램을 만드는 데 사용할 수 있는 코드가 포함되어 있습니다. 이러한 예제를 테스트하려면 웹 서버 컴퓨터에서 해당 응용 프로그램을 설정해야 합니다.