4

そのため、rsyslogd を実行し、ファイル ソケットで UDP データをリッスンする FreeBSD サーバーの syslog シンクで boost.log を使用しようとしています。どうやらこれは FreeBSD ランドで動作します。実際、ファイル ソケットは dgram ソケットです (ファイル ソケットへの telnet は、FreeBSD で機能する別のものです)。

$ telnet /var/run/log
Trying /var/run/log...
/var/run/log: Protocol wrong type for socket

いずれにせよ、boost.log はファイル ソケットとは通信せず、IP アドレスのみを使用して通信します。私の計画は、アプリケーションがファイル ソケットに中継する通常の IP ベースの UDP サーバー間で情報をプロキシすることです。理論的には、これでうまくいくはずです。

ただし、ASIO が UDP を介してファイル ソケット、またはファイル ソケットと通信する方法がまったく見つかりません。ASIO を使用してファイル I/O を操作する方法があるかもしれないことは理解していますが、これは難しい Google 検索のようです。関連するものは何も表示されません。WindowsファイルI / OとASIOを処理する必要があるのは、せいぜい(このサイトにある)ほんのわずかです。

理想的には、次のようなものを探しています (ただし、これはまったく存在しません)。

socket.send_to(boost::asio::buffer(data, length),
               boost::asio::ip::udp::endpoint(boost::asio::ip::file_address("/var/run/log"), port);

しかし、うまくいくものは何でも取ります。

4

1 に答える 1

4

local::datagram_protocol::endpointとを探していますlocal::datagram_protocol::socket

于 2012-10-17T02:27:06.750 に答える