Я пытаюсь написать программу, которая отправляет потоковые пакеты определенному слушателю (я использую свой localhost) в UDP, используя ACE. Это делается для проверки моей программы, которая получает поток дейтаграмм 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;
}
Проверьте главу 9 Руководства программистов ACE (см. Http://www.amazon.com/exec/obidos/ASIN/0201699710/theaceorb-20) о том, как работает UDP с ACE. См. ACE_wrappers/examples/APG/Misc_IPC
для кода, относящегося к этому разделу.
ACE_LOCALHOST
и адресами одноранговыхACE_LOCALHOST
вместоACE_LOCALHOST
?