在UWP(通用Windows平台)上的Socket通信

3
我想实现的是基于UWP的程序和其他C#程序尝试与一台PC(Windows 10 Pro)上的Socket进行通信。
我已经尝试使用DatagramSocket类创建UDP通信模块和使用StreamSocket类创建TCP通信模块(https://msdn.microsoft.com/ko-kr/windows/uwp/networking/sockets)。但似乎模块无法正常工作。
在Windows UWP示例程序和一些开发者论坛中,我看到了一个说法,即同一设备上其他程序之间的socket通信是不可能的。
我想知道是否理解得正确。
如果是正确的,您会推荐其他解决此问题的方法吗?

2
我看到一份声明说,在同一设备上的其他程序之间进行套接字通信是不可能的。我认为这是无稽之谈... - Jeroen van Langen
@JeroenvanLangen 谢谢您的回复。我同意这是无意义的。 - KOceanSky
如果你打算使用流,可以使用StreamSocket - MrPaulch
谢谢您的回复。我也尝试了StreamSocket类,但仍然无法工作。当然,我编辑了package.manifest文件。 - KOceanSky
什么意思不起作用了?你是在尝试与哪个C#项目进行UWP通信?谁是服务器,谁是客户端?你实际需要工作的是StreamSocket还是DatagramSocket? - Sunteen Wu
显示剩余4条评论
1个回答

3
我看到一条说同一设备上其他程序之间的套接字通信是不可能的声明。
这是正确的。根据DatagramSocket official sample的说明:
使用IP环回地址进行的网络通信通常不能用于通用Windows平台(UWP)应用程序和不同进程(不同的UWP应用程序或桌面应用程序)之间的进程间通信,因为这受到网络隔离的限制。
我们无法将uwp应用程序与同一机器上的其他应用程序进行通信。
此外,如果是正确的,您会推荐其他解决此问题的方法吗?
在我的测试中,如果您将C#控制台项目用作服务器,并将UWP应用程序用作客户端,则它们可以同时使用StreamSocketDatagGramSocket成功通信。 但需要注意以下特殊步骤才能使其正常工作。
  • 请确保已启用Internet(Client&Server)和Private Internet(Client&Server) 功能

  • 将服务器端以管理员身份运行。

  • 当您运行服务器时,请允许Windows提示的网络访问。

我编写了一个包含UDP和TCP服务器端和客户端的演示。您可以在这里下载并进行测试。

以下是结果。

enter image description here

虽然这样可以运行,但我建议你不要使用除了开发目的之外的其他用途。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接