我正在開發一個項目,我需要從頭實現http;我必須從數據包中將文件放在一起,而不是使用像wget或cURL這樣的預先構建的文件抓取器。有沒有用於處理數據包的簡單框架(跨平臺或unix)?任何人都有在數據包級別上實現的GET或PUT方法的例子嗎?在C++中實現HTTP
回答
您應該嘗試使用來自http://pocoproject.org/的POCO HttpClient/HttpServer類HttpClient應支持客戶端所需的POST/GET方法。
良好的呼叫Ghita,來源是非常可讀! – hedgehogrider
HTTP 不在數據包級別實現的,它是在一個TCP套接字,其中介紹自己作爲一個流的基礎上實現的。
HTTP/1.1由RFC2616定義,儘管在規範中有很多實現技巧和陷阱是不明顯的。
對OSI層其他人的點正在一旁......
你可以用標準C++平凡的序列化,或者您可以使用歸檔/ ASIO和類似的機制,從Boost庫。
而不是點你到一個地方,我會」建議你在堆棧溢出閱讀這個問題和它的各種答案通過:
Serialize and send a data structure using Boost?
它涵蓋了你的選擇非常好,並提供了良好的資源,給你一個快樂的基礎,這樣你就可以根據你將要做的事情做出更明智的決定。
HTTP請求和響應標頭是換行符分隔的ASCII文本。不需要序列化數據結構。所以這裏有用的鏈接問題的部分只是在套接字和緩衝區之間讀取/寫入字節數據的部分。 –
- 1. 在HTTP中實現超時
- 2. 如何在ASP.NET中實現HTTP 1.0/1.1
- 3. 在Spring中實現If-Match HTTP標頭
- 4. 如何在Ruby Net :: HTTP中實現Cookie
- 5. 在servlet中實現HTTP基本認證
- 6. 在Javascript中實現HTTP發佈
- 7. 在python中手動實現HTTP GET
- 8. 在iOS中實現HTTP Live Streaming
- 9. 在C#中實現DataCash 3DSecure
- 10. 在C中實現strtok
- 11. 在C++中的表實現
- 12. 在C++中實現「tail -f」
- 13. 在C++中實現堆棧
- 14. NET:在C#中的實現#
- 15. 在c中實現超時#
- 16. 在C++中實現反射
- 17. 在C#中實現「表」
- 18. 在C++中設置實現?
- 19. IntSetArray在C++中的實現
- 20. 在c#中實現exslt.dynamic.evaluate(XslCompiledTransform)
- 21. 在c#中實現代表#
- 22. 在c中實現隊列#
- 23. 在C++中實現SIMD
- 24. 在C++中實現樹
- 25. logsumexp在C中的實現?
- 26. 在C++中實現Deque
- 27. 在C++中實現接口
- 28. 在C#中實現DDD實體類
- 29. 實現在Objective-C
- 30. 在C++中實現C#「只讀」行爲
爲什麼你需要從頭開始實施它?許可問題? – Dennis
你在混合不同的網絡層。 HTTP沒有數據包的概念,並且TCP層沒有HTTP的概念。 –