簡體   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