Flash/Flex도 소켓 기반의 네트워크 연결을 지원하며 서버측은 C++, VB, C#, Java 등 모든 언어로 개발이 가능합니다. 네트워크 포트를 수신함으로써 Flash/Flex로 개발된 클라이언트로부터 연결을 수신할 수 있습니다.
ActionScript 3.0은 소켓 연결을 통해 서버와의 통신을 제공합니다. 이는 기존의 B/S 구조를 뛰어넘는 중요한 특징입니다. 이를 통해 네트워크 통신을 즉시 연결할 수 있으며 HTTP 프로토콜의 상태 비저장 연결의 단점을 피할 수 있습니다. ActionScript 3.0에서는 연결을 위해 XMLSocket 클래스를 사용합니다. 소켓 연결을 위해 XMLSocket 클래스를 사용하는 경우 방화벽을 자동으로 통과할 수 없다는 점에 유의해야 합니다. 방화벽을 통해 연결하려면 HTTP 프로토콜 기반의 RTMP 프로토콜을 사용해야 합니다.
Adobe에서 제공하는 API 설명서를 참조하면 XMLSocket이 네 가지 공개 메서드를 제공한다는 것을 알 수 있습니다.
1 XMLSocket(host:String=null,port:int=0)-Create 새로운 XMLSocket 객체.
2. close():void--XMLSocket을 닫습니다.
3. connect(host:String,port:int):void--지정된 TCP 포트에 연결합니다.
4. send(object:*):void--연결 서버로 데이터를 보냅니다.
이를 이해한 후에는 XMLSocket을 사용하여 소켓 기반 네트워크 실시간 통신 애플리케이션을 개발할 수 있습니다. 다음은 C#을 통해 소켓 서버를 제공하고 포트 8888을 수신합니다. 샘플 프로그램은 다음과 같습니다.
1usingSystem;
2usingSystem.Collections.Generic;
3usingSystem.Linq;
4usingSystem.Text;
5usingSystem .Net.소켓;
6usingSystem.IO;
7
8namespaceFlashFlexDotNet
9{
10classProgram
11{
12staticvoidMain(string[]args)
13{
14TcpListenerlistener ;
15
16try
17{
18listener=newTcpListener(8888);
19}
20catch(Exceptionex)
21{
22Console.WriteLine (예: 메시지);
23return;
24}
25
26listener.Start();
27Console.WriteLine("서버가 시작되고 클라이언트 연결을 기다리는 중입니다.");
28boolloop= true;
29
30while(loop)
31{
32Sockets=listener.AcceptSocket();
33NetworkStreamns=newNetworkStream(s);
34StreamReaderreader=newStreamReader(ns );
35stringresult=string.Empty;
36try
37{
38result=reader.ReadLine();
39Console.WriteLine(result);
40}
41catch (예외예)
42{
43Console.WriteLine(ex.Message);
44}
45}
46}
47}
48}
49
서버측 Socket이 준비되었습니다. 클라이언트의 ActionScript의 XMLSocket이 .net Socket 서버와 통신하기 위해 어떻게 Socket 연결을 설정하는지 살펴보겠습니다.
이 기사의 앞부분에서 소개한 것처럼 ActionScript 3.0은 소켓 기반 네트워크 통신을 개발하는 데 직접 사용할 수 있는 소켓 기반 네트워크 연결 클래스 XMLSocket을 제공합니다. 다음과 같이 ActionScript 3.0에서 제공하는 XMLSocket을 기반으로 네트워크 연결을 설정합니다.
1privatefunctionconnectionServer():void
2{
3xmlConn=newXMLSocket();
4xmlConn.connect("127.0.0.1",8888);
5}
이후 XMLSocket 인스턴스 메소드 send()를 통해 소켓 서버에 메시지를 보낼 수 있습니다. 다음 코드 정의:
1privatefunctiononSend():void
2{
3xmlConn.send(txtData.text+"n");
4}
전체 클라이언트 코드:
1
2
4BackgroundGradientColors="[#CDCAE6,#FFFFFF]">
5
67importmx.controls.Alert;
8
9privatevarxmlConn:XMLSocket;
10
11privatefunctionconnectionServer():void
12{
13xmlConn=newXMLSocket( );
14xmlConn.connect("127.0.0.1",8888);
15}
16
17privatefunctiononSend():void
18{
19xmlConn.send(txtData.text+ "n");
20}
21]]>
22
23
24
25
26