我正在尝试编写一个程序,使用ACE将流数据包发送到UDP中的某个侦听器(我使用的是localhost)。 这是为了测试从远程对等端接收UDP数据报流的程序。 到目前为止,我已设法模拟流,但我不知道如何使用真实网络的连接接收数据。
这是一个代码示例,它为本地主机发送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;
}
答案 0 :(得分:0)
检查ACE程序员指南的第9章(参见http://www.amazon.com/exec/obidos/ASIN/0201699710/theaceorb-20),了解UDP如何与ACE协同工作。有关属于该部分的代码,请参阅ACE_wrappers/examples/APG/Misc_IPC
。