C2DM의 개념 자체를 잘 모르겠습니다.


구글링을 하면 할 수록 미궁에 빠지네요;


써드파티 서버와 구글 클라우드 서버, 리시버 앱. 3가지로 구성된다는건 이해하겠는데,


이글 저글 읽어보면서...


리시버 어플이 자체적으로 써드파티 서버 역할을 할 수 있다는 내용도 있고 -_-;


써드파티 서버를 따로 구성해야 된다는 말도 있고,


이거 뭐가 뭔지 감이 안잡히네요.


C2DM을 찾아보던 이유는 서버 없이, 서로 쌩판 IP주소도 모르는 폰 간에 같은 어플만 있다는 전제 하에


SMS나 메신저 등을 통하지 않고 서로 통신하는 방법을 연구하던 중이었는데요.


서버가 있다면 원래 이런 방식으로 통신을 하잖아요?


1. A단말기에서 서버에 자신의 IP주소와 고유정보 전송, 타겟에 대한 개략적 정보 전송

2. B단말기도 서버에 자신의 IP주소와 고유정보 전송, 타겟에 대한 개략적 정보 전송

3. 서버에서 A단말기와 B단말기의 전송 내용을 기반으로 A와 B를 서로 매칭시켜 IP주소를 상대방에게 보내줌

4. A단말기와 B단말기가 서로의 IP주소를 받아 1:1 직접 통신 시작

- 두 단말기, 자체 서버 필요


그런데 구글링을 통해서 아리까리하지만 정리된 내용이


1. A단말기에서 어플을 통해 구글 클라우드 서버에 자신의 IP주소와 고유정보 전송, 타겟 개략적 정보 전송

2. 구글 클라우드 서버에서 A단말기의 내용을 전체에 브로드캐스팅

3. 구글에 연결된 모든 단말기들이 해당 브로드캐스팅 내용 접수

4. 해당 브로드캐스팅을 접수할 어플이 있는 단말기만 내용을 캡쳐

5. 해당 어플을 가진 단말기들이 타겟이 자신인지 인식후 자신이 B단말기라면 A단말기의 IP주소로 응답 전송

6. A단말기와 B단말기가 1:1 직접 통신 시작

- 두 단말기만 있고, 서버는 구글클라우드 서버가 대체해줌


요렇게 이해했는데, 이게 맞는건가요?


원래는 TTL값을 미친듯이 높이 올려놓고 아무 아이피나 일단 받을 수 있도록 브로드캐스트를 미친듯이 때려서


로또의 확률로라도 A단말기와 B단말기가 서로를 찾게 하는 방법을 생각했었는데 -_-;


이건 아무래도 현실적으로 미친 아이디어 같아서 -_-;


블루투스, wifi등등 여러가지를 고려해보다가 C2DM을 봤는데, 서버를 대체해준다는 제 이해가 맞는건지 모르겠네요.


궁극적으로 중간 매개 서버 없이 1:1 직접 통신을 할 수 있어야 한다는 제 연구랑은 거리가 멀지만


일단 C2DM 저게 뭔 원리인지부터 이해하고 싶어요 -_-;


서버를 따로 구축해서 굴려야 한다(단말기->서버->클라우드서버->다른단말기)

VS. 

구글 클라우드 서버가 서버를 대체해준다.(단말기->클라우드서버->다른단말기)


어떤게 정확한가요?


질문글이 너무 길어졌네요 -_-;