[英]iostream like networking in C++?
是否可以在 C++ 中執行 stream like.networking?
就像是:
sstream<"www.google.com"> google;
sstream<socket_data> data;
google << "hello";//send hello
google >> data;//read response
if(data.size() > 0)//ok
{
//manipulate data
}
如果是,如何?
我找不到有關此主題的任何信息。
我寫了 crossplatform.network 你可以在這里找到源代碼: https://bitbucket.org/ptroen/crossplatfor.network/src/master/ (它建立在 boost::asio 之上)
該庫在獲得高性能的同時相當多地概括了 a.network 協議。 例如,這將是一個 http 客戶端(從https://bitbucket.org/ptroen/crossplatfor.network/src/master/OSI/Application/Stub/HTTPClient/main.cc中提取)OSI::Transport::Interface:: IClientTransportInitializationParameters 初始化參數; init_parameters.ParseServerArgs(&(*argv), argc, 80, 80);
OSI::Transport::HTTP::HTTPClientTransport<SampleProtocol::IncomingPayload<OSI::Transport::Interface::IClientTransportInitializationParameters>, SampleProtocol::OutgoingPayload<OSI::Transport::Interface::IClientTransportInitializationParameters>, SampleProtocol::SampleProtocolClientSession<OSI::Transport::Interface::IClientTransportInitializationParameters>, OSI::Transport::Interface::IClientTransportInitializationParameters> client(init_parameters);
SampleProtocol::IncomingPayload< OSI::Transport::Interface::IClientTransportInitializationParameters> request(init_parameters);
client.RunClient((char*)init_parameters.ipAddress.c_str(), request);
其中 SampleProtocol 只是一個 class,帶有由模板調用的方法(請參閱 size()、max_size()、ToString() 和 FromString(),但如果你趕時間,你可能只將它用作你的有效負載。
通過一些工作,您可以使用類似接口的 sstream 包裝它以實現 .network iostream 效果,如果您需要提取器,甚至可以在內部將其傳遞給 sstream。例如,這里有一個關於如何從 std::ostream https://horstmann派生的參考.com/cpp/iostreams.html (它用於不同的用例,但是很好的參考讀物)。
要使 a.network stream 庫成為您需要做的食譜,請執行以下操作:
如果你想阻止,你可以在命令行上使用 invoke curl(參見這里https://linuxize.com/post/curl-command-examples/ if windows install cgywin),這樣就不需要單獨的線程了。 在調用 curl 之后,采用 stream,解析命令行響應並將其傳遞回字符串並插入到你的 iostream class 中。這種 curl 方法的另一個缺點是你基本上必須實現一個 http 客戶端解析器。
祝你今天過得愉快:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.