[英]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。
讓SendAll
將const char*
或const std::string&
作為參數可能會更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.