我正在使用C++套接字。該程序只需要一個HTTP頁面,將其讀入緩衝區buf[512]
,然後顯示緩衝區。但是,頁面可以包含比緩衝區更多的數據,因此如果沒有剩餘空間,它將被切斷。我可以使緩衝區大小更大,但這看起來不是一個好的解決方案。這是我正在使用的代碼:我應該在C++中使用什麼作爲緩衝區來接收來自網絡套接字的數據?
char buf[512];
int byte_count = recv(sockfd, buf, sizeof(buf), 0);
什麼是將C++中的char數組用作緩衝區的替代方法?
由於這是一個HTTP請求,頁面大小可能包含在標題信息中。如果你可以檢索到你可以動態分配內存(使用std :: vector)來保存整個頁面。請注意,僅僅因爲Web服務器發送了200個字節並不意味着您將在一個塊中接收它們。允許傳輸將其分解爲更小的塊,並且應該循環直到recv()返回0或錯誤代碼。 –
2010-08-10 16:01:52