Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 接受防火墙后网络外部的连接_C#_Networking_Tcp_Firewall_Tcplistener - Fatal编程技术网

C# 接受防火墙后网络外部的连接

C# 接受防火墙后网络外部的连接,c#,networking,tcp,firewall,tcplistener,C#,Networking,Tcp,Firewall,Tcplistener,目前,我已经编写了一个应用程序(一种通信应用程序),使用TcpListener TcpClient将客户端彼此连接到服务器。 (客户端应该能够相互连接,同时也能够连接到服务器) 问题在于用户拥有的防火墙应用程序。他们的防火墙应用程序完全阻止来自网络外部的传入连接 (我尝试使用vbscript中带有CreateObject(“HNetCfg.FwMgr”)的windows防火墙配置脚本解决此问题,但它不适用于防火墙应用程序!) 我该怎么办? 是否有任何解决方法,或者我们只需为每个防火墙编写手册 补

目前,我已经编写了一个应用程序(一种通信应用程序),使用TcpListener TcpClient将客户端彼此连接到服务器。 (客户端应该能够相互连接,同时也能够连接到服务器)

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

(我尝试使用vbscript中带有CreateObject(“HNetCfg.FwMgr”)的windows防火墙配置脚本解决此问题,但它不适用于防火墙应用程序!)

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

补充说明:

防火墙应用程序,如卡巴斯基、node、zonealarm和

TeamViewer就是一个很好的例子。他们是怎么做到的


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

您可以做的是从客户端测试internet连接,然后尝试从外部联系您的服务器或任何其他客户端,如果没有答复,则询问或提示用户“您正在使用防火墙吗?大多数防火墙检测或通知用户有问题”应用程序试图联系“服务器”

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

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


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

您可以通过使用监控程序(如或您的意思是“应用程序正试图充当服务器”)来了解这些程序的功能“是吗?不,这也不行!防火墙仍然会阻止该端口。您是否有示例应用程序或开源项目的链接来查看它是如何实现的?关于该项目的信息不多。无论如何,这意味着在客户端,我会告诉客户端路由器将特定的端口流量转发到客户端pc?这不会再次被防火墙阻止吗?是的。区别在于大多数软件防火墙都会提示用户允许或拒绝连接。用一行代码破例使用Windows防火墙是相当简单的,这是大多数人都有的。但是大多数人不知道如何在他们的路由器上打开端口,这就是为什么UPnP是有用的。