所以我试图在我的FreeBSD服务器上使用带有syslog接收器的boost.log,它运行rsyslogd并在文件套接字上侦听UDP数据。显然这适用于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的方法,但这似乎是一个艰难的谷歌搜索 - 没有任何相关性。只有少数东西(在这个网站上)最多只需要处理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);
但我会采取任何可行的方法。