我有一个Windows Universal Application应该充当TCP服务器.
m_Listener = new StreamSocketListener(); m_Listener.ConnectionReceived += (s, e) => ProcessRequestAsync(e.Socket); var bind = m_Listener.BindServiceNameAsync("8080").Wait();
在启动应用程序之前,端口没有绑定到任何东西:
C:\Users\jsant>netstat -a | grep 8080 ^C (Cancelled after some seconds because no reasults were found)
然后,当我启动应用程序时:
C:\Users\jsant>netstat -a | grep 8080 TCP 0.0.0.0:8080 Laptop:0 LISTENING
套接字正在我的电脑上听!试图以某种方式访问它会导致错误
C:\Users\jsant>telnet 127.0.0.1 8080 Connecting To 127.0.0.1...Could not open connection to the host, on port 8080: Connect failed C:\Users\jsant>telnet 192.168.1.167 8080 Connecting To 192.168.1.167...Could not open connection to the host, on port 8080: Connect failed C:\Users\jsant>telnet Laptop 8080 Connecting To Laptop...Could not open connection to the host, on port 8080: Connect failed C:\Users\jsant>telnet localhost 8080 Connecting To localhost...Could not open connection to the host, on port 8080: Connect failed
作为一个可能的原因,我已经激活了所有删除它的功能.
在控制台应用程序上运行的相同代码工作得很好.
此外,从https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/DatagramSocket运行MS示例 具有相同的结果.在应用程序内部,插座是可见的,在外面,不是!
在Windows Universal Application中运行服务器有任何限制,还是我遗漏了什么?
谢谢!
若昂
编辑我认为我不够清楚.我的问题是从外部应用程序访问TCP服务器.该应用程序可以是telnet,Web浏览器等.服务器位于Windows Universal App内.
编辑#2
我花了最后一小时改变这个例子:https://ms-iot.github.io/content/en-US/win10/samples/BlinkyWebServer.htm并在我的Raspberry Pi 2中运行它我能够从我的电脑访问网络服务器.在我的计算机上运行相同的应用程序我无法连接.这真奇怪!
编辑#3我已经更改了我的应用程序,只保留了Internet(客户端和服务器)功能而没有声明.在Raspberry Pi中运行完美无瑕,在我的本地计算机上,仍然没有运气(本地或远程).是的,防火墙已被禁用:).基于Jared的评论,他在计算机上确认了同样的问题,这在我看来是一个错误.我会继续调查.
在了解命令"CheckNetIsolation"后编辑#4,添加"PrivateNetworkClientServer"功能允许我从外部设备访问.仍然无法从本地计算机访问它(即使添加了LoopbackExempt规则)