我正在尝试构建一个视频通话应用程序。它可以是基于Web的,也可以是桌面应用程序。我已经设法使用SilverLight生成基于Web的Web服务器,但是当我在服务器上托管服务器部件(由GoDaddy托管)时,代码如下:
Listener_Socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Listener_Socket.Bind(new IPEndPoint(AddressAr[0], Port));
Listener_Socket.Listen(-1);
(主要在.Bind语句中)生成以下异常:
Request for the permission of type 'System.Net.SocketPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed
at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
at System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap, StackCrawlMark& stackMark)
at System.Security.CodeAccessPermission.Demand()
at System.Net.Sockets.Socket.Bind(EndPoint localEP)
at WebApplication3.SocketCoderVideoServer.Start_A_Server_On(Int32 Port)
我可能的解决方案是什么?另外,如果我要放弃以下项目,那么最好的替代方案是,如果可能的话,我不需要服务器来监听新的连接?
请帮助我,因为我需要设置视频会议......
由于
答案 0 :(得分:1)
托管不授予您的代码创建和使用套接字的权限 - 这是有道理的,因为GoDaddy不希望托管代码创建和使用任意套接字连接,这将是安全和性能的噩梦。
我的建议是尝试使用已启动并运行的某些第三方服务 - Skype和MSN Messanger都支持视频会议,你不能利用它吗?
我认为基于XMPP协议的即时通讯服务器也可以支持视频 - 请参阅http://xmpp.org/about-xmpp/
答案 1 :(得分:1)
如果你在某处使用Flash和RTMP服务器实现,你会有更好的运气。我花了太多时间在Silverlight上进行视频会议,而这并不是为了它而做的。除非您计划在接下来的几年中解决这些问题,否则您需要本机运行代码,而Flash则提供这些代码,而Silverlight则不然。