2008年10月31日金曜日

boost::asio syslog daemon service for windows

なんだかんだと、デバッグでよく利用するので、思いきってウィンドウズのサービスにしました。



単純に UDP で、メッセージを受け取って書き出すだけなので、syslog に則ったフォーマットである必要も無いです。boost::asio::io_service はクライアント側で使うには重いぞなもし…って場合は、以下のような感じでいけると思います。


void udp_send( const char* buf, size_t len ) {
WSAData wsaData;

SOCKET sock;
struct sockaddr_in addr;

if( !WSAStartup(MAKEWORD(2,0), &wsaData) ) {
sock = socket(AF_INET, SOCK_DGRAM, 0);
if( sock != INVALID_SOCKET ) {
addr.sin_family = AF_INET;
addr.sin_port = htons(514);
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
sendto(sock, buf, len, 0, (struct sockaddr *)&addr, sizeof(addr));
closesocket(sock);
}
WSACleanup();
}
}

0 件のコメント: