소켓서버를 구현하여 테스트 해보진 못했지만....레퍼런스만 정리해 보면 다음과 같다.

소켓에 연결하고 데이터를 전송하거나 받을때 XMLSocket과 Socket은 약간의 차이점을 갖는다.

[  Socket 연동 ]
Socket에 데이터를 보낼 때 Socket은 flush()를 사용하여 데이터를 최종적으로 보낸다.
Socket()은 데이터를 받을때  ProgressEvent.SOCKET_DATA 을 통해 받는다.

[ XMLSocket연동 ]
XMLSocket에 데이터를 보낼 때 Socket은 send( xml delegator )를 사용하여 데이터를 최종적으로 보낸다.
XMLSocket()은 데이터를 받을 때 DataEvent.DATA이벤트를 통해 데이터를 받는다.

[ Socket에 기록하기 위한 메서드들 ]
writeBoolean(value:Boolean):void

소켓에 부울 값을 씁니다 
   
writeByte(value:int):void
소켓에 바이트를 씁니다.  
   
writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
지정된 바이트 배열로부터 바이트 시퀀스를 씁니다.  
   
writeDouble(value:Number):void
소켓에 IEEE 754 배정밀도 부동 소수점 숫자를 씁니다.  
   
writeFloat(value:Number):void
소켓에 IEEE 754 단정밀도 부동 소수점 숫자를 씁니다.  
   
writeInt(value:int):void
소켓에 부호 있는 32비트 정수를 씁니다.  
   
writeMultiByte(value:String, charSet:String):void  (ex: writeMultiByte('내용' , 'UTF-8')    )
지정된 문자 세트를 사용하여 바이트 스트림에서 멀티바이트 문자열을 씁니다.  
   
writeObject(object:*):void
소켓에 AMF 직렬 형식으로 객체를 씁니다.  
   
writeShort(value:int):void
소켓에 16비트 정수를 씁니다.  
   
writeUnsignedInt(value:uint):void
소켓에 부호 없는 32비트 정수를 씁니다.  
   
writeUTF(value:String):void
소켓에 부호 없는 16비트 정수를 기록합니다.
이것은 지정된 UTF-8 문자열의 바이트 수와 문자열 자체의 길이를 의미합니다.  
   
writeUTFBytes(value:String):void
소켓에 UTF-8 문자열을 씁니다.

[ Socket에 읽기 위한 메서드들 ]
readBoolean():Boolean
소켓에서 부울 값을 읽습니다. 
   
readByte():int
소켓에서 부호 있는 바이트를 읽습니다. 
   
readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
소켓에서 length 매개 변수로 지정된 만큼의 데이터 바이트를 읽습니다.  
   
readDouble():Number
소켓에서 IEEE 754 배정밀도 부동 소수점 숫자를 읽습니다.  
   
readFloat():Number
소켓에서 IEEE 754 단정밀도 부동 소수점 숫자를 읽습니다.  
   
readInt():int
소켓에서 부호 있는 32비트 정수를 읽습니다.  
   
readMultiByte(length:uint, charSet:String):String
지정된 문자 세트를 사용하여 바이트 스트림에서 멀티바이트 문자열을 읽습니다.  
   
readObject():*
소켓에서 AMF 직렬 형식으로 인코딩된 객체를 읽습니다.  
   
readShort():int
소켓에서 부호 있는 16비트 정수를 읽습니다.  
   
readUnsignedByte():uint
소켓에서 부호 없는 바이트를 읽습니다.  
   
readUnsignedInt():uint
소켓에서 부호 없는 32비트 정수를 읽습니다.  
   
readUnsignedShort():uint
소켓에서 부호 없는 16비트 정수를 읽습니다.  
   
readUTF():String
소켓에서 UTF-8 문자열을 읽습니다.  
   
readUTFBytes(length:uint):String
소켓에서 length 매개 변수로 지정된 만큼의 UTF-8 데이터 바이트를 읽고 문자열을 반환합니다.

이처럼 다양한 속성과 메서드를 제공하지만 실제로 스마트폭스 소켓을 사용하면 위의 메서드는 사용할 일 이 거의 없다. 스마트폭스 소켓서버는 세계적으로 인정받는 소켓이기도 하지만 거의 모든 기능이 구현되어있어 로그인이나 채팅시 메세지 전송 등 대부분의 소켓통신을 이용한 메서드가 구현되어있으므로 별도의 학습이 필요하지만 학습을 한 후에는 강력한 기능의 소켓통신 어플리케이션을 만들 수 있을 것이다.
ps) 스마트 폭스 서버
Posted by 버터백통
[ 소켓의 활용 ]
1. 소켓연결은 데이터 전송이 이루어진 다음 자동으로 종료하지 않는다.
2. 클라이언트의 요청이 없더라도 데이터를 Push한다.
3. 주로 멀티유저 어플리케이션에 이용한다.
   
[ 소켓의 종류 ]
1. XMLSocket 
    * 텍스트 기반
    * 실시간 채팅 시스템과 같이 지연 시간이 낮아야 하는 클라이언트 서버 응용 프로그램에 유용
    - XML 메시지는 전이중 TCP/IP 스트림 소켓 연결을 통하여 전송됩니다.
    - 각 XML 메시지는 완전한 XML 문서이며 0바이트로 끝납니다.
    - 단일 XMLSocket 연결에서 송수신할 수 있는 XML 메시지의 수에는 제한이 없습니다.
    
    * XMLSocket.connect() 메서드는 1024 이상의 TCP 포트 번호에만 연결
      ( 1024보다 작은 포트 번호는 주로 FTP, Telnet, HTTP 등과 같은 시스템 서비스에 사용되므로,
         보안 문제 때문에 XMLSocket 객체가 이러한 포트를 사용하지 못하도록 차단 )
    
2. Socket 
    * 바이너리 소켓(메일서버 , 채팅서버 등의 원격제어)
    * ActionScript 코드를 활성화하여 소켓 연결을 만들고 원시 이진 데이터를 읽고 쓸 수 있도록 합니다.
    * XMLSocket과 유사하지만, 수신된 또는 전송된 데이터의 형식을 지정하지는 않습니다. 
    
[  보안정책 ]
    - swf와 호스트는 같은 도메인에 있어야 한다.
    - 네트워크에 있는 swf는 로컬서버에 접근할 수 없다.
    - 허용되지 않은 swf파일은 어떠한 네트워크에도 접근할 수 없다.
    - 크로스 도메인접근을 허가하거나 1024포트이하에 연결하는 경우 크로스도메인 정책이 필요
Posted by 버터백통

파일을 선택/저장하는 다이얼로그 창에서 검색하고자 하는 파일의 형식을 정하여 보고자 한다면 FileFilter() 클래스를 사용한다. FileFilter()는 *.jpg , *.doc등으로 확장자를 필터링하여 검색하게 되므로 파일선택시 매우 편리하며 파일형식을 모르는 유저에게는 다른짓을 못 하도록 막는 차단의 역할을 할 수 있다.

FileFilter()는 배열로 값이 설정되며, description 속성에는 파일 형식에 보여줄 문자열을 설정하고 extension속성에는 필터링할 활장자를 "*.png;*.jpg;*.gif"와 같이 설정하여 FileReference()나 FileReferenceList()에 browse() 메서드에서 배열로 설정한다.
Posted by 버터백통