액션스크립트에서 바이너리 데이터를 서버로 전송하는 코드입니다. 물론… 서버 측에서 바이너리 데이터를 받아 들이는 서비스를 제공해야겠지요.. 바이너리 데이터 전송이므로.. 방식은 POST를 사용합니다.. 액션스크립트 코드는 다음과 같습니다..
protected function button1_clickHandler(event:MouseEvent):void { var loader:URLLoader = new URLLoader(); var request:URLRequest = new URLRequest("http://127.0.0.1:8080/Xr?edChkLog"); var bytes:ByteArray = new ByteArray(); bytes.writeDouble(3.14); bytes.writeInt(34321); bytes.position = 0; request.data = bytes; request.method = URLRequestMethod.POST; request.contentType = "application/octet-stream"; loader.dataFormat = URLLoaderDataFormat.BINARY; loader.addEventListener(Event.COMPLETE, onCompleted); loader.addEventListener(IOErrorEvent.IO_ERROR, onError); loader.load(request); }
바이너리 데이터는 ByteArray 타입에 저장되며.. 원하는 데이터를 write 매서드 군으로 저장시킵니다. 9번 코드와 15번 코드가 꼭 필요한지는 제거해서 확인해 보시기 바랍니다..
서버측은.. 저 같은 경우 자바의 서블릿을 사용했는데… POST 방식으로 요청을 받으므로 doPost 매서드를 오버라이드해서 데이터를 읽어오면 됩니다.. 바이너리 데이터를 쉽게 읽기 위해 DataInputStream을 사용했는데.. 이해를 돕고자.. 관련된 코드를 제시한다면 다음과 같습니다..
.... ServletInputStream in = req.getInputStream(); System.out.println("readable size: " + in.available()); DataInputStream dis = new DataInputStream(in); System.out.println(dis.readDouble() + " , " + dis.readInt()); ....
req는 서블릿의 요청에 대한 HttpServletRequest 객체입니다.. 화면상에 읽을 수 있는 바이너리의 바이트 수와 클라이언트가 보낸 실수값(3.14)와 정수값(34321)이 찍히면 정상입니다..
플래시의 액션스크립트를 이용해 서버측으로부터 바이너리 데이터를 읽을 수도.. 또.. 전송할 수 있도 있음으로 퍼포먼스를 향상 시킬 수 있겠습니다..
우와 좋은 정보에요, 감사합니다 乃
감사!