我正在构建一个C#(Windows窗体)应用程序,它应该打开网络上的本地服务器。我已经搜索过并彻底搜索过,但似乎没有人接触到我所遇到的同样问题。
我在下面发布的代码确实打开了给定端口中的本地主机(当通过VS或作为普通版本运行时),但问题是,它只能通过我的笔记本电脑访问。如果我通过我的手机或任何其他笔记本电脑访问IP地址和端口,它甚至找不到服务器。经过几次尝试和头脑风暴。在我看来,它本身并没有真正打开网络上的服务器。它只是创建了某种虚拟本地主机,可以通过仅运行代码的机器访问。
这是我的代码:
private HttpListener Listener = null;
//CHECK IF HTTP IS SUPPORTED
try
{
Listener = new HttpListener();
Listener.Prefixes.Add("http://localhost:3000/");
Listener.Start();
Listener.BeginGetContext(GetContextCallback, null);
}
catch {} //SUPPRESS THE EXCEPTION/ERROR
private void GetContextCallback(IAsyncResult ar)
{
// Get the context
var context = Listener.EndGetContext(ar);
// listen for the next request
Listener.BeginGetContext(GetContextCallback, null);
var responseString = string.Format("Hello, this is a template text");
byte[] buffer = Encoding.UTF8.GetBytes(responseString);
// and send it
var response = context.Response;
response.ContentType = "text/html";
response.ContentLength64 = buffer.Length;
response.StatusCode = 200;
response.OutputStream.Write(buffer, 0, buffer.Length);
response.OutputStream.Close();
}
我对这个概念或C#本身并不熟悉。我已经构建了几个与Node.js相同的应用程序,并在C#中构建了一些应用程序。但这是我第一次尝试在C#中编写这样的应用程序。我错过了什么?