2014-08-28 75 views
1

我编写了一个程序来在同一局域网中的两台计算机之间同步文件,就像DropBox一样。它可以完美地将文件从一个文件夹同步到同一台计算机上的另一个文件夹,但是当我想在两台计算机之间测试该程序时,它无法连接到另一台计算机。boost asio服务器端客户端。在局域网中的两台计算机之间连接

我的路由器的IP是192.168.1.1,一个主机的IP是192.168.1.101(主机A),另一个是192.168.1.107(主机B),它们都在同一个局域网中。主机A运行客户机程序,主机B运行服务器程序。当主机A尝试连接到主机B,它失败并显示如下消息:

连接尝试失败,因为连接的方没有正确一段时间后响应或已建立的连接失败,因为连接的主机没有回应

我只是不知道连接到局域网中的另一台计算机时出现了什么问题,并显示连接代码。

客户端:

bool Send::CheckConnect(boost::asio::ip::tcp::socket& socket) 
{ 
    boost::asio::io_service io_connect; 
    boost::asio::ip::tcp::resolver resolver(io_connect); 
    boost::asio::ip::tcp::resolver::query query("192.168.1.107", "6873"); 
    boost::asio::ip::tcp::resolver::iterator endpoint_iterator = resolver.resolve(query), end; 
    boost::system::error_code error_connect; 

    unsigned short count = 0; 
    while(count < 3) 
    { 
     ++count; 
     if(boost::asio::connect(socket, endpoint_iterator, error_connect) != end) 
      return true;       
    } 
    std::cout<<boost::system::system_error(error_connect).what()<<std::endl; 
    return false; 
} 

服务器:

boost::asio::io_service io_sev; 
boost::asio::ip::tcp::acceptor accept_server(io_sev, boost::asio::ip::tcp::endpoint 
    (boost::asio::ip::tcp::v4(), 6873)); 
unsigned count = 0; 
boost::asio::ip::tcp::socket socket_server(io_sev); 

回答

1

在服务器端,我没有看到任何acceptasync_accept! 你需要的东西,如:

void ConnectionServer::creatSocketAndAccept() 
{ 
    //Accept the next connection. 
    acceptor.async_accept(socket, 
     boost::bind(&ConnectionServer::handle_accept, this, boost::asio::placeholders::error) 
    ); 
} 

accept情况下(因为你使用connectasync_connect)你不需要提供boost::bind为接受处理。

希望可以帮到