2012-05-31 38 views
0

目前我已经使用TcpListener-TcpClient编写了一个应用程序(一种通信应用程序),以将客户端连接到对方和服务器。 (客户端应该能够相互连接并同时连接到服务器)。从防火墙后面的网络接受连接

问题是防火墙应用程序用户拥有。他们的防火墙应用程序完全阻止来自外部的传入连接。

(我试过用的CreateObject(“HNetCfg.FwMgr”)VBScript来解决这个使用Windows防火墙配置脚本,但它并不适用于防火墙应用程序!)

我应该怎么办? 是否有任何解决方法,或者我们只需为每个防火墙编写手册!

其他注意事项:

防火墙应用程序一样,卡巴斯基,节点,ZoneAlarm的和...

TeamViewer是一个很好的例子。他们是如何做到的?

我们不希望客户端依赖于服务器。他们应该能够在不使用服务器的情况下彼此连接。

+2

你可以看到这些程序怎么做,通过使用像[Wireshark的]监测方案(http://wireshark.com/)或[套装软件(http://technet.microsoft.com/en-us/sysinternals/bb897437 .aspx) – Default

回答

0

你可以做的是测试互联网连接形成,则客户端尝试联系您的服务器或任何其他客户端从外面,如果不回复则要求或用户“是否使用了防火墙提示?大多数防火墙检测或通知“试图联系服务器的应用程序”的用户

+0

你的意思是“应用程序试图作为服务器”的消息正确吗?不,这也行不通!防火墙仍会阻塞该端口。 – Salar

0

如果您可以绕过所有防火墙,那么它们将毫无用处,即使它们禁用了它们的软件防火墙,它们仍然可以让路由器充当防火墙,而不是转发连接尝试

如果您有一个专用的服务器并允许客户端通过该服务器相互通信,那么防火墙应该不成问题因此每个客户端都会启动到服务器的传出连接。

如果您希望客户端能够充当服务器,那么该人员必须确保通过其防火墙允许该应用程序。另外,请考虑通过UPnP打开路由器上的端口。

+0

你有一个示例应用程序或开源项目的链接,看看它是如何实现的吗? – Salar

+0

http://www.codeproject.com/Articles/27992/NAT-Traversal-with-UPnP-in-C –

+0

该项目没有太多的信息。无论如何,这意味着在客户端,我会告诉客户端路由器将特定的端口流量转发到客户端PC?这不会再被防火墙阻止吗? – Salar