再说一次,我需要你无价的帮助。
我已经使用HttpListener类设置了项目,以绑定和侦听所有找到的in和端口(在本例中) 1337。现在,本地连接(从我自己的计算机在浏览器的地址栏中输入IP:Port )工作得很好,但任何来自远程设备的连接,即使是在相同的wifi网络中,也不能连接到侦听器。
示例代码(我监听端口1337上的所有连接,而不是所有找到的I)
HttpListener httplistener = new HttpListener();
httplistener.Prefixes.Add("http://+:80/");
httplistener.Start();
HttpListenerContext ctx = httplistener.GetContext();
Console.WriteLine("got context");
ctx.Response.OutputStream.Write(Encoding.ASCII.GetBytes("hello"), 0, 5);
Console.WriteLine("response written");
ctx.Response.Close();
Console.WriteLine("response closed");
Console.ReadKey();好吧,我从任何浏览器都能得到它应该得到的响应(在正常情况下,我会使用它,我的JS应用程序会得到JSON对象),但从wifi网络中的任何设备上,我都会超时,甚至无法到达上下文。
另一方面,TcpListener工作正常。为什么?我或多或少知道不同之处,在TcpListener中我可以得到一个原始的连接(就像从Putty得到的):
TcpListener tcplistener = new TcpListener(endpoint);
tcplistener.Start();
TcpClient tcpclient = tcplistener.AcceptTcpClient();
int dataAvailable = tcpclient.Available;
Console.WriteLine("connection accepted");
using(StreamWriter sw = new StreamWriter(tcpclient.GetStream()))
{
sw.WriteLine("<html><body>hello</body></html>");
}
Console.WriteLine("response written");
tcpclient.Close();
Console.WriteLine("waiting for next connection");有没有可能以某种方式使用HttpListener或将连接路由到它?我真的需要通过html页面从每个设备连接到我的应用程序的可能性。如果有任何建议,谢谢你。添加了#windows-phone-8.1标签,因为也尝试从该设备连接到HttpListener,但没有任何积极效果。
发布于 2016-02-10 17:40:27
好了,结案了。在用尽所有可能的选项后,嗅探数据包显示发送数据包在转换过程中丢失,并且永远不会到达启动服务器的计算机。我推动IT,他们拒绝了一切,但在面对确凿的证据后,他们不得不让步,承认有人让这个特定的子网以一种将每个客户端彼此分开的方式工作。
因此,当我手动打开套接字时,我能够连接(有时无法连接,但我认为这只是我的错误和混乱的实现),但在有机会到达我的网卡之前,所有其他流量都被削减了。
https://stackoverflow.com/questions/35309648
复制相似问题