繁体   English   中英

Http Web服务器-大响应数据包问题C#

[英]Http Web Server - big response packet issue C#

我一直在为主要由应用程序生成的正常运行时间监视器制作HTTP Web服务器,但希望对其进行扩展,以便更广泛地使用它。 我遇到的一个问题是,当客户端请求的图像(例如)为1MB +时,我不知道如何将图像数据拆分成适合数据包MTU大小的大小。

以下是我用来发送数据的代码。 (已启用StreamWriter AutoFlush)

        private void sendResponse(Stream stream, string fileLocation, bool useGzip, string contentType, string ResponseLine, bool CloseConnection, string server)
    {
        writer.Write(ResponseLine + "/r/n");
        writer.Write("Server: " + server + "/r/n");
        if (CloseConnection == true)
            writer.Write("Connection: close" + "/r/n");
        else
            writer.Write("Connection: keep-alive" + "/r/n");

        //if (useGzip == true)
        //    writer.WriteLine("Content-Encoding: gzip")
        writer.Write("Content-Type: " + contentType + "/r/n");
        writer.Write("Content-Length: " + stream.Length + "/r/n");
        writer.Write("Accept-Ranging: bytes" + "/r/n");
        writer.Write("" + "/r/n");

        byte[] data = new byte[stream.Length];
        stream.Read(data, 0, data.Length);
        writer.Write(data);
        writer.Flush();
    }

另外,在Wireshark中,捕获显示了500个以上具有连续或tcp段的最大大小的数据包,HTTP是否可以将大型响应拆分为多个数据包而不进行tcp分段?

已解决-使用套接字而不是TcpClient类可以处理并删除流叠加层(BinaryReader / BinaryWriter)

你不在乎 因为TCP套接字将自动执行此操作。 TCP流不受MTO的限制,没有理由不使用套接字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM