我认为大多数TCP / IP连接问题都会在网上处理exe文件。对于使用构建TCP / IP连接的外部动态链接库的情况,我找不到任何直接的答案。
我构建了一个简单的服务器和客户端应用程序,用于远程通信。它们是用c sharp dll编写的。
第三方exe将使用我的自定义动态链接库来调用我的dll库中的TCP / IP连接(外部DLL是从C Sharp编写的)用于服务器和客户端应用程序。
为了您的信息,我无权更改第三方exe文件中的任何内容,但只有我可以更改动态链接库中的任何内容。该DLL也只使用一个端口进行通信。
当我在公共网络上关闭防火墙时,一切正常。但是,只要我打开防火墙,就无法再建立连接。
我尝试创建入站规则以允许我的TCP / IP应用程序使用的防火墙中的特定端口。但是这种方法不起作用,尽管它应该有效。甚至我创建了出站规则以允许相同的端口。但它永远不会奏效。
我还尝试通过以编程方式在我的dll文件中的清单文件上设置此权限来授予管理员权限。但是再一次都没有发生。
requestedExecutionLevel level =" requireAdministrator" uiAccess ="假"
因为dll文件正在调用TCP / IP连接,所以我无法在防火墙中设置dll文件的程序规则。我认为只有exe文件才能使用防火墙中的程序规则。
所以我尝试构建等效的独立exe文件而不是我的dll文件。我为Program创建了新的入站规则,允许我的防火墙中的独立exe文件。一切都很完美。服务器exe和客户端exe应用程序都可以毫无问题地进行通信。
事情会更简单地思考这种方式。如果防火墙已关闭,则tcp连接正常。这绝对是一些线索。
问题是如何在不干扰特定端口的tcp连接的情况下放回防火墙?
为什么我创建入站和出站规则以允许端口但从不起作用?
2017年10月10日更新:
我已经改变了两台PC之间服务器和客户端的角色。 TCP 通过在防火墙中设置端口规则,连接工作正常。 现在我可以告诉问题是具体到哪一个测试 计算机,与dll或exe问题无关。
在那个有问题的计算机中,端口规则或程序规则都没有 除了在播放服务器角色时关闭防火墙以外的工作。 防火墙后可以干扰其他任何东西吗?或端口转发 在这种情况下可以帮忙吗?仍在寻找好的解决方案。