因此我在UWP中设置了一个简单的meta http-equiv="content-type" content="text/html; charset=UTF-8"
StreamSocketListener
然后,我使用从软件包清单的gui中获得的软件包系列名称将其添加到我的应用清单中。
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"/>
启用了环回功能,如本帖子UWP Enable local network loopback
但是,只能从网络上的其他设备访问我的Web服务器。如果我
,它将无法连接我尝试通过具有代理服务器的Chrome,Firefox,FireFox连接并卷曲
我运行了checknetisolation
,可以看到端口已打开
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>
我不知道该去哪里
答案 0 :(得分:1)
你是对的。为了使这一点更加清楚,请参阅此doc for enable loopback part。您将在其中看到以下评论:
“此外,Windows运行时应用程序只能将IP回送用作客户端网络请求的目标地址。因此,可以防止使用DatagramSocket或StreamSocketListener侦听IP回送地址的Windows运行时应用接收任何传入包。”