非常に単純な UNIX ドメイン データグラム クライアント/サーバーを作成しようとしています。
これがpythonサーバーです:
import socket,os
s = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
try:
os.remove("/tmp/socketname")
except OSError:
pass
s.bind("/tmp/socketname")
while 1:
data = s.recv(1024)
print data
conn.close()
これは、サーバーで問題なく動作するように見えるPythonクライアントです
import socket
import time
sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
sock.sendto('Hello, world', "/tmp/socketname")
sock.close()
この演習の目的は、boost::asio ネットワーク ライブラリで遊ぶことでした。Python コードは、サーバーが動作していることを証明する (-ish) シンプルなクライアントでサーバーをシンプルにします。
C++ クライアントでいくつかの問題が発生しています。
#include <boost/asio.hpp>
int
main(void)
{
const pid_t pid = getpid();
boost::asio::io_service my_service;
const boost::asio::local::datagram_protocol::endpoint ep("/tmp/socketname");
boost::asio::local::datagram_protocol::socket my_sock(my_service);
//my_sock.connect(ep);
//my_sock.send(boost::asio::buffer(&pid, sizeof(pid)));
my_sock.send_to(boost::asio::buffer(&pid, sizeof(pid)), ep);
return 0;
}
connect/send を使用する 2 行をコメントアウトすると、うまくいくようです。しかし、send_to を使用する行は次のエラーで失敗します。
'boost::exception_detail::clone_impl >' what() のインスタンスをスローした後に呼び出された終了: 不正なファイル記述子が中止されました
提供されたすべてのヘルプに感謝します。