相关疑难解决方法(0)

在 Linux 上使用 AF_LOCAL 或 AF_UNIX 套接字进行多播?

是否可以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)

unix sockets linux posix multicast

5
推荐指数
0
解决办法
1308
查看次数

沟通c程序和PHP

我想要一个显示输入值的网页(用PHP编写,因为它是我所知道的).我希望将该值传递给已经运行的ac程序.

我虽然使用套接字在两个进程之间进行通信,但我该如何设法做到这一点?如何使用fsockopen连接到本地套接字.

php c communication exec

2
推荐指数
1
解决办法
4820
查看次数

使用单个UNIX套接字的双向通信

我遇到这样一种情况,在后台运行的服务通过放置在文件系统上的套接字(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,该服务具有将响应的地址。

简而言之,是否有一种方法可以通过其可用的套接字接口服务进行通信,在不绑定本地端点的情况下接收响应,从而不会在文件系统上创建另一个套接字类型的文件?即某种无名的套接字,诸如此类?

当然,如果有人在我的逻辑中发现任何误解或误解,请指出。

unix sockets ipc

2
推荐指数
1
解决办法
1474
查看次数

标签 统计

sockets ×2

unix ×2

c ×1

communication ×1

exec ×1

ipc ×1

linux ×1

multicast ×1

php ×1

posix ×1