1

晚上好,

我通过以下 2 个批处理命令在我的 Windows 8 笔记本电脑上创建了一个无线托管网络:“netsh wlan set hostsnetwork mode=allow ssid=testing key=12345678”和“netsh wlan start hostsnetwork”

之后,一台设备(基于 Android 的手机)能够成功连接到我的笔记本电脑上托管的这个无线托管网络。我还在 C# 的 1234 端口上创建了一个 HttpListener,设备可以通过使用内置的 Web 浏览器访问来成功访问:

http://192.168.138.1:1234

但是,主机(即我的笔记本电脑)如何拦截和重定向网页请求?也就是说,当设备尝试访问任何网页(例如 google.com 或 facebook.com)时,如何通知在我的笔记本电脑上运行的 .NET 程序,然后通过发送此网页将设备重定向到另一个网页?

我尝试了以下方法:

HttpListener listener = new HttpListener();
        listener.Prefixes.Add("http://+:80/");
        listener.Start();
        Console.WriteLine("Started");
        while (true)
        {
            var c = listener.GetContext();
            Console.WriteLine("Connection");
            string response = "<HTML><BODY>My web page.<br></BODY></HTML>"; //Redirects device to this
            byte[] b = Encoding.UTF8.GetBytes(response);
            c.Response.ContentLength64 = b.Length;
            c.Response.OutputStream.Write(b, 0, b.Length);
            c.Response.OutputStream.Close();
        }

但是,当我使用该设备访问任何网页(例如 google.com)时,在我的笔记本电脑上运行的程序根本不会接收任何内容。抱歉,如果我问了一个重复的问题,我在任何地方都找不到!

4

1 回答 1

0

您需要设置自己的 DNS 服务器才能使其正常工作。问题是您的笔记本电脑对 google.com 进行了 DNS 查询,并收到了指向 Google 的服务器而不是您的服务器的 IP。

或者,如果您只想重定向几个站点 - 在您的hosts文件中为它们添加条目。

于 2015-01-15T08:14:49.783 回答