using System.Net;
using System.Text;
namespace HttpServer
{
class Program
{
// Main method
static void Main()
{
using var listener = new HttpListener();
listener.Prefixes.Add("http://localhost:10060/");
listener.Start();
Console.WriteLine("Listening on port 10060...");
// Request handler
while (true)
{
HttpListenerContext context = listener.GetContext();
HttpListenerRequest req = context.Request;
Console.WriteLine($"Received request for {req.Url}");
// TODO: Login stuff
Uri? url = req.Url;
if (url.ToString() == "http://localhost:10060/login")
{
using HttpListenerResponse resp = context.Response;
resp.Headers.Set("Content-Type", "text/plain");
string data = "Hello there!";
byte[] buffer = Encoding.UTF8.GetBytes(data);
resp.ContentLength64 = buffer.Length;
using Stream ros = resp.OutputStream;
ros.Write(buffer, 0, buffer.Length);
}
}
}
}
}
上面的代码是一个简单的http服务器,监听请求。当在浏览器中访问 localhost:10060 时,上面的代码有效。但是,我想通过不同的设备通过同一网络上的机器IP地址访问该服务器。这样做时,由于主机名无效,会导致错误的请求。有办法解决这个问题吗?
尝试使用 IP 地址而不是 localhost。或尝试 *:10060
我也遇到了同样的问题,在尝试了防火墙、防病毒和路由角色之后,我发现了一些可以帮助你的东西。
就我而言,我遇到了 3 个问题,以下是解决方案:
按照我的情况执行这 3 个步骤,现在我可以从同一 LAN 中的另一台设备联系该服务。
希望也能帮到你。
在另一台机器上尝试修改防火墙规则以允许端口 80。
让我们知道这是否有效。