我正在编写一个包含桌面和移动应用程序组件的应用程序。桌面应用程序是用c#编写的,我希望能够将其打开以充当移动应用程序的服务器(类似于AirVideo所做的)。如何在不要求用户配置防火墙和/或路由器的情况下完成此操作?
理想情况下,我想在桌面应用中自行托管一个安静的wcf服务。我已经尝试过了,但防火墙的自动配置不允许远程连接到wcf服务,因为它似乎由系统进程托管。这种行为有解决方法吗?
编辑:我通过使用NATUPnP COM库尽可能地解决了路由器问题(http://pietschsoft.com/post/2009/02/05/NET-Framework-Communicate-through-NAT -router-通UPnP.aspx)。我仍然需要知道如何允许通过防火墙远程连接到自托管WCF服务而无需任何手动配置防火墙(我可以通过用户提示在应用程序启动后允许连接)。
答案 0 :(得分:2)
在路由器中设置指定路由到服务器地址的特定端口,
因此,如果您的路由器真正的IP是a.b.c.d,您应该设置与a.b.c.d:port#的所有通信都被路由到您的服务器本地地址。 (a.b.c.d:port# - > serverIP)
可以通过路由器配置实现此设置。
在您无法修改路由器设置/防火墙设置的情况下:
这意味着您无法使用端口侦听传入连接,并且只能使用传出连接。要克服这一点,你必须使用具有真实IP地址的第3台服务器,它将充当双方的监听器。典型情况可以描述如下:
客户端 - A(桌面)
客户端 - B(智能手机)
服务器端 - S(通信服务器)
这样,S就可以作为粘合双方沟通的代理。