0
當使用Boost ASIO的tcp::iostream
類時,我想明確地設置方案(http vs https),主機和端口號。我看到很多例子,方案和主機一起使用,但不能和端口一起使用。我覺得該端口是自動確定的。但是,我需要明確地設置它。如何使用Boost tcp :: iostream指定方案,主機和端口
當使用Boost ASIO的tcp::iostream
類時,我想明確地設置方案(http vs https),主機和端口號。我看到很多例子,方案和主機一起使用,但不能和端口一起使用。我覺得該端口是自動確定的。但是,我需要明確地設置它。如何使用Boost tcp :: iostream指定方案,主機和端口
首先,iostream
構造函數的參數等效於resolver::query
作爲documentation clearly states。該first argument是主機,第二是服務(也稱爲端口)
basic_resolver_query(
const std::string & host,
const std::string & service,
resolver_query_base::flags resolve_flags = address_configured);
二,boost:asio::ip::tcp::iostream
類不支持方案,它是嚴格的TCP流作爲類型暗示。它不執行SSL握手或加密,所以沒有HTTPS。如果你需要額外的功能,你需要自己實現它,可能使用this question中描述的boost::iostream
庫。
感謝您幫助我區分協議和應用程序層。我認爲當「https」網址沒有像「http」那樣工作時,我就會得出結論。我的代碼將不得不查看該方案以確定它需要做什麼。 –
有趣的一面是,傳遞「http」或其他任何東西到ctor/connect都會影響代碼。我的猜測是asio正在爲我查找標準端口。 –
@travis thst是解析服務名稱(例如http,ftp等)時的預期行爲。 –