Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Araxis91
0 / 0 / 0
Регистрация: 19.04.2017
Сообщений: 6
#1

Ответ от HTTP сервера. Ошибка net::ERR_CONNECTION_RESET - C#

18.10.2017, 15:15. Просмотров 214. Ответов 0
Метки нет (Все метки)

Очень нужна помощь с ответом от сервера HTTP. Задача:
Есть простой самописный HTTP server, который постоянно слушает входяшие подключения. Как только в браузере вносишь ИПадрес_сервера:порт, сервер должен вернуть текст в окно браузера. Но вся сложность в том, что сервер не должен читать входящий запрос. Тоесть, как только он увидел, что к нему коннектятся по определённому порту, ему должно быть всё-равно, что это за запрос. Нужно просто прислать html страничку.
Привожу пример кода. Ответ сервера в методе handleGETRequest(). Если внести команду: telnet адресс порт, то сервер сразу же отдаёт текст правильно.
Но если зайти через браузер, получаю ошибку "Не удается получить доступ к сайту".
В консоли самого браузера появляется ошибка:"GET http://адрес_сервера:порт net::ERR_CONNECTION_RESET"
Так же в коде есть 3 закоментированые строки:
//inputStream = new BufferedStream(socket.GetStream());
//parseRequest();
//readHeaders();
Если их раскоментировать, то ответ в браузер приходит правильный. В этих методах читается входной поток, парсится и читаются заголовки. Больше ничего.
Тоесть, если просто читать входной запрос, то браузер принимает ответ сервера правильно. Но стоит убрать чтание заголовков, и получаем ошибку. Почему?
Как сделать, чтобы ответ приходил, не читая входящие запросы?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
public void listen()
 {
   listener = new TcpListener(adr, port);
   listener.Start();
    while (is_active)
    {
     TcpClient s = listener.AcceptTcpClient();
     HttpProcessor processor = new HttpProcessor(s, this);
     Thread thread = new Thread(new ThreadStart(processor.process));
     thread.Start();
     Thread.Sleep(1);
     }
  }
 
 public void process()
{
  outputStream = new StreamWriter(new BufferedStream(socket.GetStream()));
  try {
      //inputStream = new BufferedStream(socket.GetStream());
      //parseRequest();
      //readHeaders();
      handleGETRequest();
      }
  catch (Exception e)
      {
       writeFailure();
       Library.WriteLog("Exception  " + e.ToString());
      }
       outputStream.Flush();
       outputStream = null; 
       socket.Close();
}
 
public void handleGETRequest()
{
 srv.handleGETRequest(this);
}
 
public override void handleGETRequest(HttpProcessor p)
{
  p.outputStream.WriteLine("HTTP / 1.1 200 OK");
  p.outputStream.WriteLine("Content-Type: text/html; charset=UTF-8");
  p.outputStream.WriteLine("Transfer-Encoding: chunked");
  p.outputStream.WriteLine("Connection: keep-alive");
  p.outputStream.WriteLine("Keep-Alive: timeout=2000");
  p.outputStream.WriteLine("Cache-Control: max-age=0\n");
  p.outputStream.WriteLine("<html>");
  p.outputStream.WriteLine("<head><title> 200 Test </title></head>");
  p.outputStream.WriteLine("<center><h1> 302 Test2 ");
  p.outputStream.WriteLine(Service1.GetData());
  p.outputStream.WriteLine("</h1></center>");
  p.outputStream.WriteLine("<hr><center> nginx </center>");
  p.outputStream.WriteLine("</body>");
  p.outputStream.WriteLine("</html>");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2017, 15:15
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ответ от HTTP сервера. Ошибка net::ERR_CONNECTION_RESET (C#):

Http сервер и клиент. При попытке получить ответ клиента от сервера ошибка: Поток был недоступен для чтения
Здравствуйте, пытаюсь разобраться с написанием клиент-серверного приложения...

HTTP авторизация - возвращает неверный ответ
Здравствуйте! Делаю запрос к сайту.Приходит вот такой ответ (прикрепленный...

Получить ответ от сервера
Добрый день! У меня возник еще один вопрос. Пишу программу которая...

Получить ответ от сервера
Что за команда в HttpWebRequest, при помощи которой можно узнать код ответа от...

Ответ от асинхронного сервера
Добра. Решил написать асинхронный сервер. Сначала полёт был отличный. Писал...

Как отловить ответ сервера (Awesomium 1.7)
Всем доброго дня! Есть тут люди, познавшие awesomium? При авторизации на...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2017, 15:15
Привет! Вот еще темы с решениями:

Получить ответ сервера с помошью HttpWebResponse
Здравствуйте! Возможно, сказывается то, что уже даже не ночь и мозги не варят,...

Если ответ от сервера не пришел в течении 45 секунд то
Нужно сделать так: Отсылаем реквест.Если через 45 секунд ответ не пришел или...

Текстбокс неправильно отображает кириллицу (Ответ от сервера)
ель ВКонтаР- Пишет, что то на подобии этого, когда в нем отображаю...

POST запрос: иногда приходит пустой ответ от сервера
Отсылаю POST запрос(HttpWebRequest) , использую прокси(запрос на pw.mail.ru) и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru