Http сервер и клиент. При попытке получить ответ клиента от сервера ошибка: Поток был недоступен для чтения - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, пытаюсь разобраться с написанием клиент-серверного приложения используя сокеты. Написал в одном консольном проекте сервер:
namespace HttpServer
{
    class Program
    {
        static void Main(string[] args)
        {
            var server = new TcpListener(90);
            server.Start();
            do
            {
                var tcpClient = server.AcceptTcpClient();
                var networkStream = tcpClient.GetStream();
 
                using (var streamReader = new StreamReader(networkStream))
                using (var streamWriter = new StreamWriter(networkStream))
                {
                    Console.WriteLine("Request: " + streamReader.ReadLine());
                    streamWriter.Write("HTTP/1.1 200 OK\r\n\r\n");
                    streamWriter.Write("<h2>Hello from simplest HTTP server</h2>");
                }
            } while (true);
        }
    }
}
В другом консольном проекте написал клиента:
namespace HttpClient
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new TcpClient();
            do
            {
                client.Connect("localhost", 90);
                var networkStream = client.GetStream();
 
                using (var streamWriter = new StreamWriter(networkStream))
                    streamWriter.Write("GET / HTTP/1.1");
                using (var streamReader = new StreamReader(networkStream))
                    Console.WriteLine("Response: " + streamReader.ReadLine());
                
                client.Close();
            } while (true);
        }
    }
}
Вот что происходит: 1. Запускаю сервер. Он начинает ожидать подключения клиента вызваз метод AcceptTcpClient(). 2. Запускаю клиента. Он подключается к серверу. 3. Сервер принимает коннект и открывате потоки для записи и чтения и ждёт от клиента сообщение. 4. Клиент открывает поток для записи и отправляет сообщение серверу. 5. Сервер принимает сообщение от клиента, выводит на консоль и отправляет ответ серверу. 6. Клиент пытается открыть поток для чтения и вылетает exception: Поток был недоступен для чтения. Не могу понять почему и как это исправить, помоги пожайлуста. Так же у меня вопрос такой. нужно ли закрывать на сервере при переходе на следующую итерацию цикла do-will закрывать коннект у tcpClient, или это происходит внутри метода AcceptTcpClient() ? А так же у меня вопрос вот такой. Вот я запустил сервер и хочу через браузер обратится к серверу и получить страничку html, как мне через браузер обратиться?

Решение задачи: «Http сервер и клиент. При попытке получить ответ клиента от сервера ошибка: Поток был недоступен для чтения»

textual
Листинг программы
                using (var streamReader = new StreamReader(networkStream))
                    Console.WriteLine("Response" + streamReader.ReadLine());

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.5 из 5
Похожие ответы