2013-12-09 1 views
2

저는 POCO 라이브러리를 처음 사용하고 있으며 튜토리얼 pdf에서 net 예제를 수행하고 있습니다.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 


편집 : 예외의 displayText()에 대한 제안 요아킴 Pileborg에 대한

감사합니다. 그것은이 표시됩니다 : "순 예외 : 대상 주소가 필요합니다"

그리고이 같은 코드를 수정하고 일 :

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()을 사용할 수 있습니다.

희망이 도움이됩니다.