AFCONSTARAM(ローカルファイル)を使用してSOCK_STREAMを使用してソケットを作成しています。我々はクライアントであるシステム上で多くのプロセスを持っており、我々はそれらのクライアントにメッセージをブロードキャストすることにのみ関心がある。 OSはUbuntu 14.04.5 LTSです。片方向のSOCK_STREAM
int XyzClient::establish_connection() {
int fd;
if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) {
throw XyzException(strerror(errno));
}
sockaddr_un addr = {};
addr.sun_family = AF_UNIX;
strncpy(addr.sun_path, DEFAULT_SOCKET_PATH, sizeof(addr.sun_path)-1);
if (connect(fd, (sockaddr*)&addr, sizeof(addr)) == -1) {
// connect failed, close fd and throw exception
close(fd);
throw XyzException(strerror(errno));
}
return fd;
}
:クライアントは、以下のコードを使用して接続しようとすると、
このすべての作品ファイルのパーミッションは、しかし、セキュリティ対策として、我々はしかし、644にそれを変更したい、666をしている場合は、この許可例外が発生します
おそらく上記のコードは、ファイルへの読み書きアクセスを確立しようとしており、アクセス許可エラーを引き起こしている可能性があります。
所有者/放送者以外のすべての人がファイルを読み取り専用にロックできるように、一方向のSOCK_STREAMは可能ですか?
ファイルからストリーミングソケットを作成するにはどうすればよいですか?ローカルソケットを使用することを意味しますか(つまり、 'AF_LOCAL'または' AF_UNIX')?私たちに見せることができる[最小限の、完全で検証可能な例](http://stackoverflow.com/help/mcve)を作成してみてください。あなたが以前にそれをやっていないなら、[良い質問をする方法について](http://stackoverflow.com/help/how-to-ask)を読んでください。 –
どのOSですか?ソケットは標準のC++ライブラリの一部ではありませんか? –
"クライアント例外を引き起こす"とはどういう意味ですか? –