如果是远程ip,C#httplistener错误

本文关键字:C#httplistener 错误 ip 如果 | 更新日期: 2023-09-27 18:28:08

我创建了一个httplistener,它只能使用localhost作为前缀。如果我将其更改为远程服务器ip,它会显示一个错误。

这是代码:

 HttpListener listener = new HttpListener();
        listener.Prefixes.Add("http://*:8080/");  // I need localhost replaced with remote ip
        listener.Start();
        while (true)
        {
            // Wait for a client request:
            HttpListenerContext context = listener.GetContext();
            // Respond to the request:
            string msg = "You asked for: " + context.Request.RawUrl;
            context.Response.ContentLength64 = Encoding.UTF8.GetByteCount(msg);
            context.Response.StatusCode = (int)HttpStatusCode.OK;
            using (Stream s = context.Response.OutputStream)
            using (StreamWriter writer = new StreamWriter(s))
                writer.Write(msg);
        }
        listener.Stop();

这就是网络客户端:

   using (WebClient wc = new WebClient())        // Make a client request.
                    wc.DownloadString
                      ("http://"my public ip"(on  my router):8080/lg.txt"); //port forwarding is set
                MessageBox.Show("received");

只有当我将"我的公共ip"更改为本地ip时,它才有效有什么想法吗?

如果是远程ip,C#httplistener错误

您的Windows防火墙打开了吗?试着禁用它,看看这是否有帮助。您可能需要实际禁用Windows防火墙服务(在本地服务列表中)。

首先,检查防火墙。不过,更可能的是http.sys,它由HttpListener使用——您必须通过"netsh"为帐户提供前缀。您可以通过作为提升的管理员帐户短暂运行来检查这一点——如果它有效,可能是http.sys权限问题。