2011-07-06 2 views
0

나는 두 개의 클래스 UDPSender와 UDPReceiver를 가지고있다.
Senarios :
(1) Linux의 QNX 및 UDPReceiver에서 UDPSender를 실행할 때 작동합니다.
(2) WindowsXP의 QNX 및 UDPReceiver에서 UDPSender를 실행할 때 작동하지 않습니다. (하지만 Wireshark를 사용하는 UDP 데이터 그램을 보았습니다. 센더 리오 (Sender)가 Senario (1)에서와 같이 작동 함을 의미합니다)
Windows.
i) 보낸 사람이 127.0.0.1로 UDP 메시지를 보내면받는 사람이 메시지를받을 수 있습니다.
ii) 보낸 사람이 UDP 메시지를 192.168.1.137 (네트워크의 로컬 주소)로 보내는 경우받는 사람은받을 수 없습니다.
boost :: asio UDP Windows에서 메시지를받는 방법?

내 질문은 :

어떻게 수신기 윈도우에서 작업받을 수 있나요?


일부 코드 : 그것은 아마도 Windows 방화벽에 의해 차단되는 것

UDPReceiver::UDPReceiver(boost::asio::io_service& service, unsigned short port) 
: m_service(service), 
    m_socket(service, udp::endpoint(udp::v4(), port)), 
    m_peerEndpoint(), 
    m_buffer(), 
    m_messageReceipient() 
{ 
} 

void UDPReceiver::SetMessageReceipient(const boost::function<void(const char*, unsigned int)>& r) 
{ 
    m_messageReceipient = r; 
} 

void UDPReceiver::Start() 
{ 
    m_socket.async_receive_from(
     boost::asio::buffer(m_buffer, m_buffer.size()), m_peerEndpoint, 
     boost::bind(&UDPReceiver::HandleReceived, shared_from_this(), 
          boost::asio::placeholders::error, 
          boost::asio::placeholders::bytes_transferred)); 
} 

void UDPReceiver::Stop() 
{ 
    m_socket.close(); 
} 

void UDPReceiver::HandleReceived(const boost::system::error_code& error, size_t bytesReceived) 
{ 
    assert(!m_messageReceipient.empty()); 
    if(error) { 
     LOG(Comms, Error, "UDPReceiver:" << error.message()); 
    } 
    else { 
     m_messageReceipient(&m_buffer.front(), bytesReceived); 
     m_socket.async_receive_from(
      boost::asio::buffer(m_buffer, m_buffer.size()), m_peerEndpoint, 
      boost::bind(&UDPReceiver::HandleReceived, shared_from_this(), 
          boost::asio::placeholders::error, 
          boost::asio::placeholders::bytes_transferred)); 
    } 
} 
+0

Senario (3)에서 로컬 주소와 동일한 결과를 갖는 udp 소켓을 초기화 해 보았습니다. –

답변

1

.

+0

우리의 네트워크 지원에 이야기 한 후에는 매우 가능성이 있습니다. 그러나 어리석은 corp 노트북은 나를 구성하거나 보지 못하게한다. 동료 (Windows 7) 노트북을 사용해 보겠습니다. 감사. –

+0

내 동료 노트북 (Windows 7)에서 작업 중입니다! 그의 방화벽은 관리가 가능합니다. 문제 해결, 바보 야! 고맙습니다!! –

+0

@ JQ : 기꺼이 도와 드릴 수 있습니다. –

관련 문제