TcpListener отправляет ответ - PullRequest
0 голосов
/ 21 мая 2019

Сегодня я работаю над сокетами, и моя цель - понять, как 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);

Он просто не отвечает и не доходит до следующей строки. ИДК почему.

Спасибо.

...