실행하면 액세스 위반이 발생하는 코드 블록이 있습니다. boost :: asio에 대한 async_connect 핸들러입니다. 이 [0] 널 values_ 동안 values_ 가려고하기 때문에 문제 같다 디버거boost :: asio :: ip :: tcp :: resolver :: iterator 값이 null인지 확인하십시오.
//------------------------------------------------------------------------------
void MyClient::OnConnect(const boost::system::error_code & errorCode, boost::asio::ip::tcp::resolver::iterator endpoint)
{
if (errorCode || endpoint == boost::asio::ip::tcp::resolver::iterator())
{
// Error - An error occured while attempting to connect
// Most likely these error codes correspond to https://msdn.microsoft.com/en-us/library/windows/desktop/ms740668(v=vs.85).aspx
std::ostringstream msg;
msg << "An error occured while attempting to connect to " << endpoint->host_name()
<< ". Error code: " << errorCode
<< ". Error Message: " << ErrorCodeToString(errorCode);
LogError(msg.str().c_str(), __FUNCSIG__, __FILE__, __LINE__);
return;
}
// We connected to an endpoint
m_connectionState |= CONNECTED;
는 HOST_NAME()> endpoint- 안에.
이것은 일반적인 연결 거부 시나리오입니다. 핸들러가 엔드 포인트를 가지고 있다고 생각하여 연결하려는 사람을 알 수있었습니다! 메서드를 호출하기 전에 iterator에서 수행 할 수있는 검사 방법이 있습니까?
통과하고 여전히 아마 당신이 지금이 문제를 알아 냈어요
if(endpoint != boost::asio::ip::tcp::resolver::iterator())
{
std::string blah = endpoint->host_name();
}