그리드 기술이 적용된 PC 컨텐츠 다운로드
Windows 버전일 경우 libmgrd.dll 형태의 라이이브러리로 제공됩니다.
Mac 버전일경우 libmgrd.dylib 형태의 라이이브러리로 제공됩니다.
그리드 기술이 적용된 PC 컨텐츠 다운로드, "다운로드" 와 다르게 컨텐츠를 다운로드 도중 컨텐츠 재생이 가능하며 SEEK 를 지원합니다.
다운로드 도중 컨텐츠는 임시 파일(.part)의 형태로 진행되며, 다운로드 완료시 원래 파일명으로 변경됩니다.
SEEK, 배속, 이어보기, 화면 밝기, 볼륨조절 등이 지원되는 실시간 컨텐츠 재생합니다.
플레이어는 HTML5로 작성되었으며, iCoxs에서 제공합니다.
플레어어를 제공되며, 거의 모든파일에 플레이가 가능합니다.
*표는 그리드 사용시 필수항목입니다.
스토리지가 리눅스 일 경우 mserver (32bit, 64bit), Windows 일 경우 mserver.exe 로 제공되며, HTTP 프로토콜을 지원하는 파일 서버 모듈 입니다.
이미 파일서버에 HTTP 서비스 중일경우(nginx, apache 등), mserver 를 설치 하지 않으셔도 됩니다.
mserver.cnf 의 설정파일을 지원합니다. 설정파일에 id, password를 입력하여 인증을 사용할 수 있습니다.
다운로드 어플에 장착하여 다운로드 시작전에 _setShareFile() 호출하여, 공유파일을 지정해 줍니다.
다운로드 어플에 장착하여 다운로드 시작은 _startDown() 호출하고, 다운로드 상태는 _getDownInfo() 또는 _getDownInfo2(), 다운로드 중시에는 _stopDown()를 호출합니다.
피어 모듈은 smmgr.exe 서비스 프로그램을 배포하시면 됩니다.
1. 파일서버에서 mserver 을 실행하여 주십시오. 또는 apache, nginx 등을 통해서 HTTP가 가능한지 확인하세요.
2. 다운로드 어플에 libmgrd.dll를 장착하십시오.
3. 셋업프로그램과 함께 피어 모듈(smmgr.exe)를 배포 하십시오.
그리드 모듈과의 통신은 JSON 으로 되어 있습니다. JSON의 Key-Value 모두 String 형태로("xxx":"yyyy") 로 작성하십시오.
다른 그리드 사용와 함께 장착시에는 파일 공유를 위해 _setShareFile() 함수를 꼭 사용하세요.
A. hash값을 알고 있는 경우에는 다음과 같은 json 사용 (보통 웹하드에서 사용하는 해시값)
{
"site": "iCoxs", //할당 받은 사이트 이름
"hash": "GDFDSAFGFSDSAFSDFSAF", //파일 해시 - 기존의 웹하드에서 일반적으로 사용하는 해시
"filesize": "1231235", //파일사이즈
"localfilename": "c:\\abcd\\aaa.avi", //로컬에 저장될 파일이름
}
return 은 true, false
true 일 경우 함수 성공, false 실패
B. hash값을 모를 경우는 다음과 같은 json 사용 - mserver 사용시
{
// 필수정보
"site" : "iCoxs", //할당 받은 사이트 이름
"server" : "183.111.69.152:5588", //서버아이피:포트
"serverfilename" : "e3f20ec8060f3f1f5b98718b2df6f37b_2208143958", //파일서버에 저장된 파일이름
"index" : "20002", //파일의 인덱스값
"hash" : "", //파일의 해시값, 해시값를 모를경우 "" 처리하세요.
"filesize" : "2208143958", //파일사이즈
"localfilename" : "c:\\download\\judge.mp4",//저장될 로컬파일이름
}
return 은 true, false
true 일 경우 함수 성공, false 실패
jsonString =
{
// 필수정보
"site" : "iCoxs", //iCoxs에서 제공된 아이디값
"server" : "183.111.69.152:5588", //서버아이피:포트
"serverfilename" : "e3f20ec8060f3f1f5b98718b2df6f37b_2208143958", //서버의 파일이름
"index" : "20002", //파일의 인덱스값
"hash" : "e3f20ec8060f3f1f5b98718b2df6f37b", //파일의 해시값, 해시값를 모를경우 "" 처리하세요.
"filesize" : "2208143958", //파일사이즈
"localfilename" : "c:\download\judge.mp4", //저장될 로컬파일이름
// 조건부 필수정보
"user_name" : "111", //mserver(서버모듈)의 mserver.cnf 에서 작성된 값을 입력하십시오.
"user_pwd" : "222",
"user_params" : "",
}
*(파일서버 전송 팁) mserver가 웹서버이므로,
브라우저에서 http://111:222@183.111.69.152:5588/e3f20ec8060f3f1f5b98718b2df6f37b_2208143958
파일이 전송되면 정상입니다. (http://아이디:비번@서버아이피:포트/서버파일이름)
WCHAR* reStart = _startDown(jsonString);
reStart = {"err" = 0, xxxxx} //err 만 확인하시면 됩니다. xxxx 는 무시하십시오.
err이 0일때에만 정상 다운로드 됩니다.
enum MGRID_START_STATUS_CODE
{
E_MGRID_NONE = 0, // 정상상태
E_MGRID_EXISTS = -1, //파일이 있는 상태
E_MGRID_PARAM = -2, // 파라메터 에러
E_MGRID_WRITE = -3, //파일쓰기 실패
E_MGRID_SPACE = -4, //디스크 공간부족
E_MGRID_DIRECTORY = -5, //디렉토리 만들기 실패
E_MGRID_WORK = -6 //그외 동작에러
};
*json 문자열로 파라메터를 보내기 힘드실경우는 _startDown2()함수를 사용하십시오.
int _startDown2(WCHAR* site, WCHAR* serverIP, WCHAR* serverfilename, WCHAR* fileIndex,
WCHAR* localFilename, WCHAR* hash, __int64 filesize, WCHAR* userid, WCHAR* userpass, WCHAR* userparams);
리턴값이 아래와 같이 json으로 전답됩니다.
json를 사용하기 어려울 경우 _getDownInfo2() 함수 사용하세요.
{
"state" : 2, //전송상태
"site" : "iCoxs", //사이트 아이디
"index" : "4", //파일 인덱스
"localfilename" : "d:\\download\\222.mp4", //저장된 로컬파일명
"filesize" : 1145862774, //파일 사이즈
"speed" : 10040, //전송속도 (bytes per second)
"remain_time" : 143, //남은시간 (second)
"current_file_size" : 78273024, //현재 파일사이즈 - 물리적 사이즈
"receive_size" : 49283072, // 전송된 사이즈
(전송중지 후 재 다운로드 했을경우 current_file_size 보다 작게 나옴)
"peer_speed" : 10040, //피어속도
"peer_count" : 6, //접속 피어수
"peer_receive_size" : 49283072, //피어에서 받은 사이즈(bytes)
"server_speed" : 0, //서버속도
"server_count" : 0, //접속 서버수
"server_receive_size" : 0, //서버에서 받은 사이즈(bytes)
"hash" : "4a1e3b8954c445ac279379087730a5c2" //파일 해쉬
}
전송상태(state Value) 코드는
enum MGRID_DOWN_STATUS_CODE
{
E_MGRID_READY = 0, //준비중
E_MGRID_CONNECTING = 1, //연결중
E_MGRID_SEND = 2, //전송중
E_MGRID_COMPLETE = 3, //전송완료
E_MGRID_ABORT = 4, //전송중지
E_MGRID_ERROR = 5, //전송에러
E_MGRID_NETWORK = 6 //전송에러(네트워크에러)
};
리턴값은 MGRID_DOWN_STATUS_CODE 참조하세요.
speed //전송속도 (bytes per second)
remainTime//남은시간 (second)
revSize // 전송된 사이즈(전송중지 후 재 다운로드 했을경우 absFilesize 보다 작게 나옴)
absFilesize //현재 파일사이즈 - 물리적 사이즈
리턴값은 0
string download_json = "{xxxxx}"; <- json 문자열을 만듭니다.
string start_json_value = _startDown(download_json);
//json 파싱
int start_val = parse_start_json(start_json_value); // json 파싱해서 start_val 에 넣는다
if (start_val <> E_MGRID_NONE){
// 에러처리 후 리턴
return;
}
string state_json_value = _getDownInfo(download_json);
int state_code = parse_start_json(state_json_value); // json 파싱해서 state_code 에 넣는다
while(state_code > 0){
if ( state_code >= E_MGRID_COMPLETE){
// 다운로드가 완료 되었거나, 에러
break;
}else{
// 다운로드 ui 그리기 작업
}
sleep(500); // 500 ms sleep
}
_stopDown();
1. smmgr.exe 설치시에 silent 옵션은 /VERYSILENT /SUPPRESSMSGBOXES 사용하십시오.
모듈 / OS | Windows | Linux | Android | Mac |
서버 모듈 | mserver_setup.exe | mserver-linux.zip | ||
다운로드 라이브러리 | libmgrid.dll | libmgrid.aar mstreamgrid.aar | libmgrid.dylib | |
피어 모듈 | smmgr_setup.exe | |||
DEMO 프로그램 | MGridDemo.zip | MyGrid_Android.zip | Mac_Demo.zip | |
플레이어 라이브러리 | libmplayer.aar libvlc.aar |