구글 클라우드 프린트 기술에 대한 구글에서 제공하는 privet관련 자료(출처:https://developers.google.com/cloud-print/docs/privet) 를 따라 크롬브라우저에서 프린터를 인식하도록 간단한 코드를 만들어 봤다. 등록까지 해보려 했으나 아직 모르는 것이 많아 실패했다.
JmDNS
mDNS 혹은 DNS-SD와 관련해서 각 프로그램 개발 언어마다 오픈 소스 라이브러리가 있는 듯 했다. JAVA에는 JmDNS라이브러리(홈페이지:https://github.com/jmdns/jmdns) 가 대표적인 것으로 보인다. 크롬 브라우저에서 임시로 제작한 프린터(프로그램)을 인식되도록 하는 코딩은 간단히 되었다.
PTR 정보
String name = "ZCUBE";
String typePrivet = "._privet._tcp.local";
String typePrinter = "._printer._sub._privet._tcp.local";
프린터는 아래 두개 항목에 대한 PTR정보를 제공해야 한다.
- _privet._tcp.local
- _printer._sub._privet._tcp.local
TXT 레코드
Map<String,String> txts = new HashMap();
txts.put("txtvers", "1");
txts.put("ty", "ZCUBE PRINTER");
txts.put("url", "https://www.google.com/cloudprint");
txts.put("type", "printer");
txts.put("id", "");
txts.put("cs", "online");
필수항목만 구현했다. TXT레코드는 Key-Value값으로 구성되는데, 'ty'키값에 해당하는 값이 프린터 이름으로 크롬 브라우저에 표시된다.
서비스 알림
ServiceInfo svc = ServiceInfo.create(typePrivet, name, typePrinter, 5353, 1, 1, txts);
JmDNS jmdns = JmDNS.create(InetAddress.getLocalHost());
jmdns.registerService(svc);
'ServiceInfo' 객체에 제공할 정보를 담고 이 정보를 mDNS사양에 따라 망에 뿌린다. 아주 간단히 구현이 되었다.
크롬브라우저
크롬브라우저는 일반 프린터가 클라우드 프린터처럼 동작하게 해주는 역할뿐만 아니라, 클라우드 지원 프린터를 등록하는 기능도 제공한다. 버전마다 다를 수 있지만, "설정 > 고급 > 인쇄:구글 클라우드 프린트" 화면으로 이동해서 "클라우드 프린트 기기 관리" 화면을 열면 된다. 아니면 URL입력 창에서 "chrome://devices/" 로 이동해도 된다.
위의 코드를 이용해서 간단한 프로그램을 구현/구동 후 크롬브라우저의 해당 화면을 보면 아래 그림처럼 구현된 프린터가 표시된다.
마치며
이 간단한 작업을 하는데도 시행착오가 있었다. TXT레코드에 대한 정확한 인식없이 작업을 하다보니 장치는 인식되지만 이름이 표시되지 않아 헤맸고, 무엇보다도 등록되는 것까지 하려 했는데, 실패했다.
'Maker Movement' 카테고리의 다른 글
자바유료화 대책 (0) | 2018.09.25 |
---|---|
구글 클라우드 프린트(4) - 프린터 등록 (0) | 2018.02.07 |
구글 클라우드 프린트(2) - mDNS 구현 (0) | 2017.11.30 |
구글 클라우드 프린트(1) - 들어가기 (0) | 2017.11.19 |
라즈베리파이3 콘솔포트 연결 (0) | 2017.04.26 |