Я попытался создать простой HTTP-сервер, используя System.Net.HTTPListener, но он не получает подключения с других компьютеров в сети. Пример кода:HTTPListener не работает по сети
class HTTPServer
{
private HttpListener listener;
public HTTPServer() { }
public bool Start()
{
listener = new HttpListener();
listener.Prefixes.Add("http://+:80/");
listener.Start();
listener.BeginGetContext(new AsyncCallback(ListenerCallback), listener);
return true;
}
private static void ListenerCallback(IAsyncResult result)
{
HttpListener listener = (HttpListener)result.AsyncState;
listener.BeginGetContext(new AsyncCallback(ListenerCallback), listener);
Console.WriteLine("New request.");
HttpListenerContext context = listener.EndGetContext(result);
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
byte[] page = Encoding.UTF8.GetBytes("Test");
response.ContentLength64 = page.Length;
Stream output = response.OutputStream;
output.Write(page, 0, page.Length);
output.Close();
}
}
class Program
{
static void Main(string[] args)
{
HTTPServer test = new HTTPServer();
test.Start();
while (true) ;
}
}
Есть что-то неправильно с этим кодом, или есть еще одна проблема?
Я попытался запустить приложение с правами администратора, но когда я перейду на IP-адрес компьютера (то есть 192.168.1.100) на другом компьютере, я никогда не получаю запрос. Сервер отлично работает, если запрос отправляется с того же компьютера, на котором выполняется приложение (с использованием «localhost», «127.0.0.1» и «192.168.1.100»). Pinging работает отлично. Я также пробовал nginx, и это отлично работает по сети.
Я использую HTTPListener как легкий сервер для доставки веб-страницы с файлом Silverlight XAP с некоторыми динамическими параметрами init, clientaccesspolicy.xml и простой мобильной HTML-страницей.
Вы правы. Это было довольно глупо со мной. Я предположил, что, поскольку приложение работает с правами администратора, что брандмауэр не был проблемой. И, как ни странно, я никогда не получал сообщение от брандмауэра Windows, следует ли блокировать или разрешать программу. Что ж, спасибо тебе. – user1273708
Это должно выиграть кратчайший ответ или значок, тем не менее, удар по цели :) – V4Vendetta
Hah! Мне пришлось проложить его без разрывов, чтобы дотянуться до него! – spender