Сегодня я работаю над сокетами, и моя цель - понять, как http работает над двоичными файлами и многокомпонентными запросами. Чтобы начать с нуля, я начал с простого приложения для сокетов. Я знаю, как работают сокеты и протоколы, но я просто хочу что-то создать самостоятельно. В любом случае;
Я следовал этому документу из MSDN: https://docs.microsoft.com/tr-tr/dotnet/api/system.net.sockets.tcplistener?view=netframework-4.8
Там написана строка;
// Send back a response.
stream.Write(msg, 0, msg.Length);
Сначала я не понял эту строку. Почему мне нужно отправить ответ для получения данных. Если это только для целей тестирования, я смогу увидеть этот ответ от PostMan, но я не знаю.
Чтобы отправить несколько заголовков http, я попробовал этот блок кода;
byte[] msg = Encoding.ASCII.GetBytes("HTTP/1.1 200 OK");
// Send back a response.
stream.Write(msg, 0, msg.Length);
Но это не работает из-за строки. Просто не получается и ничего реально не отвечает.
Но вместо того, чтобы набирать «HTTP / 1.1 200 OK», я набираю «HTTP / 1.1a200 OK», это просто работает. Я имею в виду удалить пробел и поставить что-нибудь еще, чтобы это как-то работало. Я не знаю почему, как.
И еще одна вещь, чтобы получить байты от клиента, я использовал MemoryStream и приведенный ниже код снова не работает idk, почему:
NetworkStream stream = client.GetStream();
var ms = new MemoryStream();
stream.CopyTo(ms);
Он просто не отвечает и не доходит до следующей строки. ИДК почему.
Спасибо.