簡體   English   中英

如何通過套接字發送 PDF 文件?

[英]How can I send a PDF file over a socket?

我打開了一個二進制格式的文件並將該文件提取為字符串。 之后,我嘗試將其作為 HTTP 回復發送。 最后,它看起來像這樣:

ptr->Sendall((char*)"HTTP/1.1 200 OK\r\n");
ptr->Sendall((char*)"Content-Type: pdf/html\r\n");
ptr->Sendall((char*)"Content-Length: 16384\r\n");
ptr->Sendall((char*)"\r\n");
ptr->Sendall((char*)wholeString.c_str());
ptr->Sendall((char*)"\r\n\r\n");

內容長度等於字符串的總大小。

我在 Google Chrome Web 瀏覽器中遇到錯誤:無法加載 pdf 文件

根據定義,二進制文件可能包含阻止它們被表示為 C 字符串的字符。 您命中的第一個 NUL 字節將過早地結束字符串,並且這些字節經常出現在各種文件中。

std::string可以很好地表示這些。 c_str()將返回指向完整數據的指針,但您必須將其視為原始緩沖區,而不是 C 字符串,並將長度也提供給您的SendAll類型 function。

SendAllconst char*const std::string&作為參數可能會更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM