2011-11-28 76 views
1

我正在開發一個項目,我需要從頭實現http;我必須從數據包中將文件放在一起,而不是使用像wget或cURL這樣的預先構建的文件抓取器。有沒有用於處理數據包的簡單框架(跨平臺或unix)?任何人都有在數據包級別上實現的GET或PUT方法的例子嗎?在C++中實現HTTP

+0

爲什麼你需要從頭開始實施它?許可問題? – Dennis

+3

你在混合不同的網絡層。 HTTP沒有數據包的概念,並且TCP層沒有HTTP的概念。 –

回答

0

您應該嘗試使用來自http://pocoproject.org/的POCO HttpClient/HttpServer類HttpClient應支持客戶端所需的POST/GET方法。

+0

良好的呼叫Ghita,來源是非常可讀! – hedgehogrider

3

HTTP 在數據包級別實現的,它是在一個TCP套接字,其中介紹自己作爲一個流的基礎上實現的。

HTTP/1.1由RFC2616定義,儘管在規範中有很多實現技巧和陷阱是不明顯的。

2

對OSI層其他人的點正在一旁......

你可以用標準C++平凡的序列化,或者您可以使用歸檔/ ASIO和類似的機制,從Boost庫。

而不是點你到一個地方,我會」建議你在堆棧溢出閱讀這個問題和它的各種答案通過:

Serialize and send a data structure using Boost?

它涵蓋了你的選擇非常好,並提供了良好的資源,給你一個快樂的基礎,這樣你就可以根據你將要做的事情做出更明智的決定。

+0

HTTP請求和響應標頭是換行符分隔的ASCII文本。不需要序列化數據結構。所以這裏有用的鏈接問題的部分只是在套接字和緩衝區之間讀取/寫入字節數據的部分。 –