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