본문 바로가기

TechLog

WP7.1 SDK는 UDP 소켓을 지원하지 않는다

* WP7.1 beta 2에서는 UDP 소켓을 지원합니다! 자세한 내용은 다음 링크를 참조하세요 :

- What's New in the Windows Phone SDK
http://msdn.microsoft.com/en-us/library/ff637516.aspx

- How to: Create and Use a UDP Socket Client Application for Windows Phone
http://msdn.microsoft.com/en-us/library/hh202864.aspx


* 이 글을 쓰는 시점에서 WP7.1 SDK는 아직 정식 버전이 아닌 Beta 1 버전이며, 차후 정식 버전에서는 아래 사항이 변경될 수도 있습니다. (아니, 사실 제발 변경되기를 바랍니다)


윈도우 폰(이하 WP)에 관심이 있는 분들이라면, 최근 MS에서 WP 7.1 버전(망고) 출시를 준비하고 있다는 소식을 들었을 것이다. 케냘 또한 나름 이해관계자(?)이다 보니 이것저것 살펴보고 있는데 … 혹시 알고 있을런지 모르겠지만, WP7 SDK에서는 소켓이라는 것 자체를 지원하지 않는다. 모바일, 특히 네트워크 프로그래밍을 하는 개발자라면 이 대목을 보고 ‘……뭐라고?!!!’라는 반응을 보이겠지만, 사실이다. 케냘은 저 사실을 안 직후 ‘다른 플랫폼 쫓아가기도 바빠 죽겠는데 아예 자기들 발목을 묶고 뛰는구나…’라는 생각을 할 정도였으니까, 다른 개발자라고 해도 비슷한 생각을 하지 않을까.

다행히도 WP 7.1 SDK에는 소켓 지원이 추가되었다.  (고 개발 문서에는 적혀 있었다) 일반적으로 “소켓(혹은 소켓 프로그래밍)을 지원한다”라는 이야기는, TCP/IP 기반의 통신을 위한 라이브러리를 제공한다는 이야기이다. 당연하지만, 여기에는 TCP/UDP 뿐만이 아니라 IP 기반의 RAW 프로토콜을 사용하여 고유 프로토콜을 작성할 수 있는 기능도 포함된다.

 

그런데! - WP7.1은 UDP 소켓을 지원하지 않는다.

 

(정확히 말하자면, WP 7.1의 System.Net.Sockets 네임스페이스에는 TCP 소켓 통신을 지원하는 Socket 클래스, UDP 멀티캐스트를 위한 UdpAnySourceMulticastClient, UdpSingleSourceMulticastClient 클래스가 있다. UDP 멀티캐스트는 초기화 과정이 약간 복잡하며, 간단한 UDP 메시지를 주고받기에는 별로 적합하지 않다 – 게다가 에뮬레이터에서는 이들 클래스를 아직 지원하지도 않는다!)

 

… 대체 MS는 무슨 생각으로 WP 사업을 진행하고 있는건지 잘 모르겠는 기분이다. 아이폰이 앱 마켓을 통해 개발자를 끌어들이는데 성공한 케이스를 무시하겠다는건가? 이미 후발 주자로 시작하는 상황에서, 애플보다도 폐쇄적인 API 정책을 가지고 앱 개발자들에게 접근한다니 뭘 어쩌자는건지 … 물론 안드로이드와 달리 ‘통제된 디바이스 환경’을 제공하겠다는 의지는 이해하지만, 소켓 프로그래밍이 그러한 ‘통제된 디바이스 환경’을 구축하는데 방해가 되는 요소일까 하는 생각이 든다. 내겐 거의 일반적인 프로그래밍의 영역이라고 생각되는데 말이다. WP7에서 동작하는 네트워크 해킹 툴 같은게 나오는 꼴은 못 보겠다는 의미인가? 하지만 어차피 그런 툴은 일반 사용자가 아니라 디바이스를 해킹하고 내부까지 들여다보는데 관심 있는 사람들이나 사용하는 툴 아닌가.

 

개인적으로는 WP이 참 매력 있는 모바일 플랫폼이라고 생각하기는 하지만, 개발자들에게도 그렇게 받아들여질지, 잘 모르겠다. UDP 소켓 같은 문제가 얼마나 더 있는지도 모르겠고.