2012-07-09 3 views
5

안녕하세요. 파일을 전송하려고합니다. 파일을 바이너리로 변환하고 C++을 사용하여 네트워크를 통해 전송하는 프로그램이 있습니다. 자바 스크립트와 웹 소켓으로 파일을 전송할 수 있을지 궁금합니다. 내 C + + 프로그램을 자바 스크립트에 통합하는 방법에 대한 예제는 인정 될 것이다. 감사.자바 스크립트로 파일을 웹 소켓을 통해 전송

+0

이 또한 가능하면 관심이 있습니다. – DasBoot

답변

7

자바 스크립트가 두 개의 새로운 바이너리 종류가 있습니다.

WebSocket은 형식화 된 배열 및 모양을 보내고받는 것을 지원합니다.

웹 소켓을 사용하여 두 브라우저간에 데이터를 전송하려면 둘 다 연결할 서버가 필요합니다 (브라우저 WebSocket 지원은이 시점에서만 클라이언트입니다).

파일 전송을 처리하는 기존 서버가 C++에있는 경우 WebSocket 서버 지원을 상당히 쉽게 추가 할 수 있어야합니다.

ws = new WebSocket("ws://100.101.102.103"); 

센드() 메소드 지원을 일반적인 문자열 입력 :이 같은 일을 수행합니다 웹 소켓 서버에 대한 연결을 설정하기 위해 자바 스크립트에서 http://en.wikipedia.org/wiki/Comparison_of_WebSocket_implementations

:이 페이지에서 웹 소켓 클라이언트와 서버 구현을 찾을 수 있습니다 배열 또는 얼룩. 유형이 지정된 배열과 얼룩을 보내면 서버가 이진 프레임 (opcode = 2)으로받은 프레임이 생성됩니다. 서버가 다음 이벤트의 onMessage 데이터 속성에 따라 형식화 된 배열 또는 BLOB 중 하나를 포함하는 바이너리 프레임/메시지를 보내면

ws.onmessage = function (evt) { 
    console.log("Got ws message: " + evt.data); 
}; 

: 메시지를 수신하려면

ws.send(myTypedArray); 

당신은 메시지 핸들러를 등록 binaryType 속성의 설정. 다음과 같이 수신되는 이진 데이터의 유형을 변경할 수 있습니다.

ws.binaryType = "blob"; // or "arraybuffer" 
1

당신이하려는 것은 불가능합니다. WebSocket은 클라이언트 모드에서만 작동 할 수 있습니다. 다른 WebSocket 클라이언트 (예 : 다른 브라우저)에서 연결을 허용 할 수 없습니다.

서버를 통해 WebSocket 클라이언트를 서로 연결할 수는 있지만 그 시점에서 더 이상 실제로는 P2P (peer-to-peer)가 아니기 때문에 더 이상 유용하지 않거나 흥미로운 것인지 확실하지 않습니다.

참조 : 입력 배열 (arraybuffers)와 물방울은 (기본적으로 파일) : Will Websockets allow a server to run in the browser?

+1

감사합니다. 서버를 통해 수행하는 방법에 대한 예제를 제공 할 수 있다면 감사하겠습니다. =) – DasBoot

관련 문제