2014-01-06 1 views
0

ACE를 사용하여 UDP에서 특정 리스너 (내 로컬 호스트를 사용 중입니다)로 스트림 패킷을 보내는 프로그램을 작성하려고합니다. 이것은 원격 피어로부터 UDP 데이터 그램 스트림을 수신하는 프로그램을 테스트하기위한 것입니다. 지금까지 스트림을 시뮬레이션 할 수 있었지만 실제 네트워크 연결을 사용하여 데이터를 수신하는 방법을 모르겠습니다.C++ 인터넷 사이트에서 내 localhost로 스트림 패킷을 수신하는 방법

이것은 로컬 호스트에 대해 60 패킷을 보내는 코드 예입니다. 송신자에게 충분합니까? UDP는 ACE와 함께 작동하는 방법에 대한 ACE 프로그래머 가이드의

int SendDatagram() 
{ 
    const char* message = "this is a message!\n"; 

    ACE_INET_Addr sender (27016, ACE_LOCALHOST); 
    ACE_INET_Addr listener (27015, ACE_LOCALHOST); 
    ACE_SOCK_DGRAM udp  (sender); 


    ssize_t sent; 
    char buffer[BUFSIZ]; 
    size_t size = sizeof(buffer); 
    for (int i = 0; i < 60 ; i++) 
    { 
     sent = udp.send(message, ACE_OS_String::strlen(message) + 1, listener); 
     if (sent == -1) 
     { 
      ACE_ERROR_RETURN((LM_ERROR, ACE_TEXT("%p\n"), ACE_TEXT("send")), -1); 
     } 
     cout << "sent:  " << sent << " bytes" << endl; 
    } 

    udp.close(); 

    return 0; 
} 
+2

동일한 시퀀스의 "UDP"와 "stream"? "TCP"의 철자를 쓰려고하십니까? –

+0

신고 된 곳은 어디입니까? 왜 패킷을받은 다음 수신 한 대신 검사를 보내고 있습니다 - 이것이 실제 코드입니까? 어쨌든 원격 피어로 코드를 실제로 테스트 했습니까? ACE_LOCALHOST 대신 피어가 주소를 지정 했습니까? – Useless

+0

나는 UDP를 의미했다. 내 프로그램은 UDP 데이터 그램의 스트림을 수신합니다. 맞습니다 - 코드는 "보내기"해야합니다. 잘못된 복사 붙여 넣기 ... – inbaly

답변

0

확인 제 9 장 (http://www.amazon.com/exec/obidos/ASIN/0201699710/theaceorb-20 참조). 해당 섹션에 속한 코드는 ACE_wrappers/examples/APG/Misc_IPC을 참조하십시오.

+0

해결책을 찾는데 도움이되는 좋은 링크를 발견했습니다. http://code.msdn.microsoft.com/windowsdesktop/Sockets-with-Adaptive-c9f5cc2b – inbaly

관련 문제