c ++ Poco库UDP DatagramSocket发送示例引发一个Poco :: Net :: NetException

时间:2013-12-09 09:33:32

标签: c++ poco-libraries

我是POCO lib的新手,我正在教程pdf上做网络示例。

当我运行DatagramSocket发送示例时,我总是得到一个Poco :: Net :: NetException。

如果我使用教程给出的端口'514',我将得到一个Poco :: IOException“I / O Error”。

我的环境是kubuntu 12.04,内核3.2.0-57-generic。谁知道这个? THX !!

// 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

修改

感谢Joachim Pileborg就异常displayText()提出建议。它显示了这一点:“网络例外:需要目的地地址”

我修改了这样的代码并且有效:

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

但如果我想使用sendBytes(),是否有办法输入默认收件人的地址?

1 个答案:

答案 0 :(得分:2)

调用Poco套接字类的connect(...)函数。

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

从那里你可以dgs.sendBytes()

希望这有帮助。