所以我设置一个简单的StreamSocketListener
在我UWP
StreamSocketListener listener = new StreamSocketListener();
public async void StartServer()
{
await listener.BindServiceNameAsync("8282");
listener.ConnectionReceived += async (s, a) =>
{
using (var output = a.Socket.OutputStream)
{
using (var response = output.AsStreamForWrite())
{
var html = Encoding.UTF8.GetBytes(
$"<html><head><title>Background Message</title></head><body>Hello from the background process!<br/></body></html>");
using (var bodyStream = new MemoryStream(html))
{
var header = $"HTTP/1.1 200 OK\r\nContent-Length: {bodyStream.Length}\r\nConnection: close\r\n\r\n";
var headerArray = Encoding.UTF8.GetBytes(header);
await response.WriteAsync(headerArray,
0, headerArray.Length);
await bodyStream.CopyToAsync(response);
await response.FlushAsync();
}
}
}
};
}
然后,我将此添加到我的应用程序清单与包姓我下了图形用户界面的软件包清单的。
<Extensions>
<uap4:Extension Category="windows.loopbackAccessRules">
<uap4:LoopbackAccessRules>
<uap4:Rule Direction="out" PackageFamilyName="<my package fam name>" />
<uap4:Rule Direction="in" PackageFamilyName="<my package fam name>" />
</uap4:LoopbackAccessRules>
</uap4:Extension>
</Extensions>
我在和设置适当的能力去
<Capability Name="privateNetworkClientServer"/>
<Capability Name="internetClientServer"/>
<uap3:Capability Name="remoteSystem"/>
<Capability Name="internetClient"/>
最后,我启用了环回checknetisolation
为显示在这个岗位UWP Enable local network loopback
然而,我的网络服务器是从我的网络上的其他设备才能访问。这将无法连接,如果我
我试图通过Chrome,火狐,火狐连接使用代理它,和卷曲
我跑netstat -ano | FIND "8282"
,我可以看到端口是开放的
TCP 0.0.0.0:8282 0.0.0.0:0 LISTENING 5920
TCP [::]:8282 [::]:0 LISTENING 5920
我也尝试运行checknetisolation debug -n=<my package fam name>
但在输出中没有真正的信息
Summary Report
Network Capabilities Status
----------------------------------------------------------------------
InternetClient Not Used and Insecure
InternetClientServer Not Used and Insecure
PrivateNetworkClientServer Not Used and Insecure
Detailed Traffic Report
----------------------------------------------------------------------
InternetClient Not Used and Insecure
------------------------------------------------------------------
InternetClientServer Not Used and Insecure
------------------------------------------------------------------
PrivateNetworkClientServer Not Used and Insecure
------------------------------------------------------------------
OK.
我在哪里走了亏损
你是对的。而为了让这更清楚,请参阅本doc for enable loopback part。在那里你会看到如下意见:
“此外,一个Windows运行时应用程序可以使用IP回送仅作为目标地址用于客户端网络请求。因此,使用一个DatagramSocket或StreamSocketListener一个Windows运行时应用上的IP回送从收到任何传入的数据包防止地址听”。