2014-01-06 26 views
0

我正在尝试编写一个程序,使用ACE在UDP中发送流数据包到某个监听器(我使用本地主机)。 这是为了测试从远程节点接收UDP数据报流的程序。 到目前为止,我已经设法模拟一个流,但我不知道如何使用真实网络的连接接收数据。C++如何从互联网网站接收流数据包到我的本地主机

这是为本地主机发送60个数据包的代码示例,对发送者来说是否足够?

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

检查ACE程序员指南的第9章(见http://www.amazon.com/exec/obidos/ASIN/0201699710/theaceorb-20)为UDP如何与ACE。请参阅ACE_wrappers/examples/APG/Misc_IPC以了解属于该部分的代码。

+0

我找到了一个很好的链接,帮助我找到解决方案:http://code.msdn.microsoft.com/windowsdesktop/Sockets-with-Adaptive-c9f5cc2b – inbaly

相关问题