Http сервер и клиент. При попытке получить ответ клиента от сервера ошибка: Поток был недоступен для чтения - C#
Формулировка задачи:
Здравствуйте, пытаюсь разобраться с написанием клиент-серверного приложения используя сокеты. Написал в одном консольном проекте сервер:
В другом консольном проекте написал клиента:
Вот что происходит:
1. Запускаю сервер. Он начинает ожидать подключения клиента вызваз метод AcceptTcpClient().
2. Запускаю клиента. Он подключается к серверу.
3. Сервер принимает коннект и открывате потоки для записи и чтения и ждёт от клиента сообщение.
4. Клиент открывает поток для записи и отправляет сообщение серверу.
5. Сервер принимает сообщение от клиента, выводит на консоль и отправляет ответ серверу.
6. Клиент пытается открыть поток для чтения и вылетает exception: Поток был недоступен для чтения.
Не могу понять почему и как это исправить, помоги пожайлуста.
Так же у меня вопрос такой. нужно ли закрывать на сервере при переходе на следующую итерацию цикла do-will закрывать коннект у tcpClient, или это происходит внутри метода AcceptTcpClient() ?
А так же у меня вопрос вот такой. Вот я запустил сервер и хочу через браузер обратится к серверу и получить страничку html, как мне через браузер обратиться?
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);
}
}
}Решение задачи: «Http сервер и клиент. При попытке получить ответ клиента от сервера ошибка: Поток был недоступен для чтения»
textual
Листинг программы
using (var streamReader = new StreamReader(networkStream))
Console.WriteLine("Response" + streamReader.ReadLine());