TcpListener发回响应

时间:2019-05-21 14:44:41

标签: c# .net sockets network-programming tcplistener

今天,我正在研究套接字,我的目的是了解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,并且下面的代码再次无法正常工作,原因:

        NetworkStream stream = client.GetStream();
        var ms = new MemoryStream();
        stream.CopyTo(ms);

它只是不响应,也不会进入下一行。知道为什么。

谢谢。

0 个答案:

没有答案