[英]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.