簡體   English   中英

Boost Asio tcp::resolver: 找不到服務

[英]Boost Asio tcp::resolver: service not found

我正在嘗試使用 Boost Asio 創建一個 HTTP 客戶端。 我從 asio 復制了同步客戶端示例,編譯,然后運行。 不幸的是,在我的日志中,它顯示未找到服務。 當我跟蹤代碼時,我發現它是從以下代碼中拋出的:

boost::asio::io_service io_service;
// Get a list of endpoints corresponding to the server name.
tcp::resolver resolver(io_service);
//->if i removed the http, it has no error
tcp::resolver::query query("host.com", "http");
//->This part throws the service not found
tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
tcp::resolver::iterator end;

任何人都可以解釋為什么它找不到服務或我該如何解決這個問題?

這意味着操作系統不知道哪個端口號對應於名為“http”的 TCP 服務。

在類 unix 的操作系統上,這意味着/etc/services中缺少http 80/tcp行,我可以通過注釋掉該行來重現 Linux 上的錯誤。

如果操作系統無法配置為使用服務,您可以使用解析器中的任何服務"" ,並在為連接調用創建端點 object 時明確指定端口號:

tcp::endpoint connectionEndpoint(endpoint_iterator->address(), 80);
boost::system::error_code ec;
socket.connect(connectionEndpoint, ec);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM