如何将 UWP 应用程序中创建的客户端套接字与 C++ 中创建的服务器套接字连接起来

how to connect a client socket made in UWP app with a server socket made in C++

我使用 Microsoft 网站上提供的 winSocket 示例在 C++ 中使用 localhost(127.0.0.1) 创建了一个服务器。它是简单的 C++ 控制台应用程序。然后我根据 Microsoft 文档使用 System.Net.Sockets class 在 C# 的 UWP 应用程序中创建了一个客户端。客户端未连接。

我通过在 C++ 控制台应用程序、python 代码、简单的 C# 控制台应用程序中制作客户端再次检查,它已成功连接并在所有方面正常工作,但当我在 UWP 应用程序中制作它时,它不工作。我检查了所有可能的更改,例如检查驱动程序文件夹中的主机文件、将“localhost”更改为“127.0.0.1”、关闭防火墙、所需的 dotnet 组件等。

还有一点,UWP应用程序中的客户端只有在我们调试客户端代码时才能成功连接。但是当我们在发布中制作 final setup/installation 时,它不起作用。这很奇怪!!

它显示的错误如下所示-

SocketException : {0}System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: 连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机未能响应 127.0.0.1 :27311 在 System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) 在 System.Net.Sockets.Socket.Connect(EndPoint remoteEP) 在 SmartCabinetSolution.App.RFIDSocket.Start()

One thing more, the client in UWP app is successfully connected only when we are debugging the client code.

看起来是网络环回导致了这个问题(在调试模型中默认允许本地网络环回),如果你想在两个进程之间创建一个TCP/IP连接运行 在同一台设备上,其中一个是 UWP 应用程序,您必须启用本地主机环回。详情请参考Add loopback exemption for App Installer.