Библиотеки c++ Poco Пример отправки UDP DatagramSocket вызывает Poco::Net::NetException

Я новичок в POCO lib, и я делаю сетевые примеры в учебнике в формате pdf.

Когда я запускаю пример отправки DatagramSocket, я всегда получаю Poco::Net::NetException.

Если я использую порт «514», указанный в руководстве, я получу Poco::IOException «Ошибка ввода-вывода».

Моя среда — kubuntu 12.04, ядро ​​3.2.0-57-generic. Кто-нибудь знает об этом?? Спасибо!!

// DatagramSocket send example
#include <Poco/Net/DatagramSocket.h>
#include <Poco/Net/SocketAddress.h>
#include <Poco/Timestamp.h>
#include <Poco/DateTimeFormatter.h>

#include <string>

int main()
{
    Poco::Net::SocketAddress sa(Poco::Net::IPAddress(), 12345);
    Poco::Net::DatagramSocket dgs(sa);

    std::string syslogMsg;
    Poco::Timestamp now;
    syslogMsg = Poco::DateTimeFormatter::format(now, "<14>%w %f %H:%M:%S Hello, World!");

    dgs.sendBytes(syslogMsg.data(), syslogMsg.size());

    return 0;
}//main

Изменить:

Спасибо Иоахиму Пилеборгу за предложения по displayText() исключениям. Он показывает это: «Сетевое исключение: требуется адрес назначения»

И я изменил код следующим образом, и он сработал:

Poco::Net::SocketAddress recver("localhost", 1234);
dgs.sendTo(syslogMsg.data(), syslogMsg.size(), recver);

Но если я хочу использовать sendBytes(), есть ли способ ввести адрес получателя по умолчанию??


person Adam    schedule 09.12.2013    source источник
comment
Вы пытались поймать исключение и распечатать любую информацию, которая может быть в нем? Используйте, например. функция displayText() класса Exception.   -  person Some programmer dude    schedule 09.12.2013


Ответы (1)


вызовите функцию connect(...) класса сокета Poco.

Poco::Net::SocketAddress recver("localhost", 1234);
dgs.connect(recver);

и оттуда вы можете dgs.sendBytes().

Надеюсь это поможет.

person WolfCoder    schedule 19.10.2014