2013-12-09 94 views
2

我是POCO lib的新手,我正在做pdf教程的網絡示例。C++ Poco庫UDP DatagramSocket發送示例提高Poco :: Net :: NetException

當我運行DatagramSocket發送示例時,我總是得到一個Poco :: Net :: NetException。

如果我使用教程給出的端口'514',我將得到Poco :: IOException「I/O Error」。

我的環境是kubuntu 12.04,kernel 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 

編輯:

感謝約阿希姆Pileborg有關異常的displayText()建議。它顯示了這一點:「淨異常:目的地址需要」

而且我修改這樣的代碼和它的工作:

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

但是,如果我想使用sendBytes(),有把的方式一個默認的接收者地址?

+0

您是否嘗試捕獲異常,並打印可能包含的任何信息?使用例如['Exception'](http://pocoproject.org/docs/Poco.Exception.html)類的'displayText()'函數。 –

回答

2

請致電connect(...) Poco套接字類的功能。

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

從那裏你可以dgs.sendBytes()

希望這會有所幫助。