首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用boost.asio解析ftp站点?

如何使用boost.asio解析ftp站点?
EN

Stack Overflow用户
提问于 2010-10-14 17:28:54
回答 1查看 4.9K关注 0票数 0

Boost.asio文档不支持任何ftp示例。

代码语言:javascript
复制
 `boost::asio::io_service io_service;
tcp::resolver resolver(io_service);
tcp::resolver::query query("www.boost.org", "http");
tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);`

解析http站点并获得HTTP端点。

但是tcp::resolver::query query("ftp://ftp.remotesensing.org/gdal/", "ftp");

这会导致主机找不到错误。那么如何解析ftp站点呢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-14 17:44:42

例如,你的主机名中仍然有ftp://,如果你的主机名应该是"ftp.remotesensing.org“

代码语言:javascript
复制
#include "stdafx.h"

#include <iostream>
#include <boost/asio.hpp>

using namespace boost::asio::ip;
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
  try
  {

    boost::asio::io_service io_service;
    tcp::resolver resolver(io_service);

    tcp::resolver::query query("ftp.remotesensing.org", "ftp");
    tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
    tcp::resolver::iterator end;
    // Try each endpoint until we successfully establish a connection.
    tcp::socket socket(io_service);
    boost::system::error_code error = boost::asio::error::host_not_found;
    while (error && endpoint_iterator != end)
    {
      socket.close();
      socket.connect(*endpoint_iterator++, error);
    }

    if (!error)
    {
      cout << "socket connected: " << socket.is_open() << endl;
      // Read the response status line. The response streambuf will automatically
      // grow to accommodate the entire line. The growth may be limited by passing
      // a maximum size to the streambuf constructor.
      boost::asio::streambuf response;
      boost::asio::read_until(socket, response, "\r\n");

      std::istream response_stream(&response);
      std::string sResponse;
      while (!response_stream.eof())
      {
        response_stream >> sResponse;
        cout << sResponse << " ";
      }
    }
    else
    {
      cout << "Error: " << error.message() << endl;
    }

  }catch(std::exception& e)
  {
    std::cout << e.what() << std::endl;
  }

  return 0;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3931805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档