簡體   English   中英

C ++中套接字連接的緩沖區大小

[英]buffer size for socket connection in c++

我正在嘗試使用C / ++構建基本的POP3郵件客戶端,但是遇到了一個問題。 由於在構建程序時必須定義緩沖區大小,但是一條消息可能會很大,因此,如何使郵件服務器將其分批發送給您? 如果這不是解決問題的正確方法,那是什么?

當我在這里時,誰能為我確認RFC 2822仍是當前定義電子郵件布局的文檔?

謝謝

由於大多數電子郵件都是使用TCP / IP完成的,因此如果您確實願意,您一次可以讀取一個字節。 基礎實現將為您緩沖流。 每次從網絡上接收大約1400字節。 通常,我使用std::vector<char>std::string作為緩沖區,一次讀取一個字節,然后在select()循環中以短超時將push_back入緩沖區。

我不記得POP是否包含最大行長。 如果是這樣,則可以將其用作緩沖區大小,並在向量上調用reserve() 這樣可以最大程度地減少可能發生的內存重新分配和復制。

至於最新的標准, http : //tools.ietf.org/html/rfc2822說它已被http://tools.ietf.org/html/rfc5322淘汰。 我通常檢查http://tools.ietf.org/html/rfcXXXX ,其中XXXX是RFC編號。 如果已過時,則在頂部有一個指向最合適的RFC的鏈接。

最后要提到的是,也沒有充分的理由就不要構建用於部署的POP客戶端。 各種RFC中埋藏着許多陷阱。 但是,這確實是一個很好的學習經歷。

如果要從套接字讀取,則可以指定要讀取的字節數。 另外,您可以在運行時使用new動態分配緩沖區。

暫無
暫無

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

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