Silverlight 에서 Socket 통신시 주의사항

– 실버라이트에서 사용가능한 TCP 소켓의 포트 범위도 4502 – 4534으로 한정되어 있음.

 

– 해당포트의 권한을 부여하기 위해서는 웹에서 clientaccesspolicy.xml 사용할때와 유사하게 소켓사용시에도 Policy파일이 필요.

   즉, clientaccesspolicy.xml 을 내려보내주는 Policy서버(포트는 반드시 943)를 만들어주어야 함.

   폴리시 서버의 구축은 구글에서 Silverlight Policy Server로 찾아보면 많이 나오므로 참고 바람.

 

– Policy서버를 만들기 싫다면 구동서버의 기본 웹포트인 80포트에 clientaccesspolicy.xml을 넣어주면 됨

  그리고 Connect시에 ConnectAsync전에 SocketClientAccessPolicyProtocol의 값에 Http를 넣어주면 됨.

   var args = new SocketAsyncEventArgs();
   args.SocketClientAccessPolicyProtocol = SocketClientAccessPolicyProtocol.Http;

   ….
   this.Socket.ConnectAsync(args);

   (enlightened  테스트결과 유사한 8080포트는 안되므로, 반드시 80포트에 넣어야 함)

 

–  clientaccesspolicy.xml 의 내용