是否可以AF_UNIX
SOCK_DGRAM
在 Linux上的套接字上进行多播通信?
显然,一个补丁是在十多年前提出的。但是,我在 Internet 上找不到任何显示其使用情况的资源。以及以下简单的代码报告Operation not supported
。
u_int yes = 1;
int fd = socket(AF_LOCAL, SOCK_DGRAM, 0);
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes));
Run Code Online (Sandbox Code Playgroud) 我想要一个显示输入值的网页(用PHP编写,因为它是我所知道的).我希望将该值传递给已经运行的ac程序.
我虽然使用套接字在两个进程之间进行通信,但我该如何设法做到这一点?如何使用fsockopen连接到本地套接字.
我遇到这样一种情况,在后台运行的服务通过放置在文件系统上的套接字(SOCK_DGRAM)使自身可用于基于ASCII的命令。我能够成功将命令发送到此界面,但是无法接收后台服务生成的任何响应。
据我了解,之所以没有收到该服务的响应,是因为底层IPC从技术上讲不是在两个进程之间,而是在地址之间。因此,有必要将我的端点绑定到特定的地址位置,以便服务知道要发送其响应。但是,问题是我不想使用太多其他套接字文件来污染目录空间。
也就是说,我可以通过简单地执行以下操作来完成这项工作:
struct sockaddr_un local;
int len;
s = socket(AF_UNIX, SOCK_DGRAM, 0);
local.sun_family = AF_UNIX;
strcpy(local.sun_path, "/path/to/some/dir/mySocketFile");
len = strlen(local.sun_path) + sizeof(local.sun_family);
bind(s, (struct sockaddr *)&local, len);
//Send commands to control interface of background service
Run Code Online (Sandbox Code Playgroud)
一切都很好,因为通过绑定到mySocketFile,该服务具有将响应的地址。
简而言之,是否有一种方法可以通过其可用的套接字接口与服务进行通信,并在不绑定本地端点的情况下接收响应,从而不会在文件系统上创建另一个套接字类型的文件?即某种无名的套接字,诸如此类?
当然,如果有人在我的逻辑中发现任何误解或误解,请指出。