问题标签 [unix-socket]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
8188 浏览

python - 将 Python xmlrpclib 与 unix 域套接字一起使用?

我正在尝试与 交互supervisord,我想通过 unix 套接字(它是一个共享托管环境)与它交谈。

到目前为止我尝试过的是:

/path/to/supervisor.sock肯定存在。'unix:///path/to/supervisor.sock/RPC2' 形式的 URI 由 使用supervisord,这就是我想到的地方。文档不讨论 unix 套接字:http ://docs.python.org/library/xmlrpclib.html 。

这可能吗?我应该使用不同的库吗?

0 投票
1 回答
4452 浏览

c++ - 更改 linux 套接字文件权限

首先,是的,这与这个堆栈溢出问题有关,但我的情况略有不同,我的帖子没有得到答案。

因此,在我的戴尔桌面工作站 Ubuntu 10.04 32 位上,我开发了一个服务器程序,旨在为 Apache 运行的 PHP“程序”提供 Unix 域套接字。(注意:umask = 0022)我将套接字文件命名为 /home/wmiller/ACT/web_socket_file。(ACT 是对产品名称的引用)。/home/wmiller/ACT 的权限为 777。 /home/wmiller/ACT/web_socket_file 的创建权限为 777。

现在,我将程序复制到我的测试平台,一个 Q7 格式的 Intel 处理器板,它也有 Ubuntu 10.04 32 位和 umask = 0022。相同的目录,相同的 777 目录权限。但是,现在当我运行代码 /home/wmiller/ACT/web_socket_file 时出现 755 权限,而 Apache/PHP 无法打开 Unix 域套接字,因为它获得了 rx 权限而不是 rw- 或 rwx。Apache 在 uid = www-data 中运行。

所以我尝试了这两种方法,但都没有奏效。

尝试了 777 和 o+w 的权限。

我什至尝试添加一个

但那里没有帮助。

有人对为什么 ir 在一台机器上工作而不是在另一台几乎相同的机器上工作有任何建议吗?将套接字文件放在其他地方会更好吗?是否有标准的地方-socket-files-go?

0 投票
2 回答
2014 浏览

c++ - 结构 sockaddr_un:正确初始化

几天前,我遇到了一个与struct sockaddr_un相关的奇怪错误。可以在此处阅读有关此内容的更多信息。

一段时间后,我也找到了该错误的解决方案,这只是memset 'ing整个变量。现在我的问题是,正如已经在那边的一篇文章中提出的那样,为什么?

为什么我需要将整个本地而不是动态分配的变量设置为 0,即使我已将每个成员设置为合法且正确的值?

在其他struct(例如struct sockaddr_in)中是一个变量,它被用作填充,以便在内部看起来与struct sockaddr相同。您必须用 0 填充(或者也许您不必?请纠正我)该变量,以使程序在任何时候都能正确运行。

另外,我在哪里可以查看像 connect() 这样的源代码?会不会是 connect() 函数没有很好地实现?还是我缺少一些基础知识?

先感谢您。

0 投票
2 回答
5995 浏览

linux - 识别 Unix 域套接字连接的另一端

我试图弄清楚是什么进程持有 unix 域套接字的另一端。在一些strace输出中,我已经确定了一个给定的文件描述符,该文件描述符涉及我当前正在调试的问题,我想知道哪个进程在另一端。由于该套接字有多个连接,因此仅按路径名是行不通的。

lsof为我提供以下信息:

所以我知道一些地址(“内核地址”?),我知道一些套接字号,我知道路径。我可以在其他地方找到相同的信息:

但是,这些都没有告诉我套接字连接的另一端是什么。我怎么知道哪个进程在控制另一端?

0 投票
1 回答
4682 浏览

python - Python:code.interact(local=locals()),其中 stdin/stdout 不可用

在 Python 中,以下代码片段将在执行时打开一个交互式 shell。

事实证明,这对于调试大量文档不足的代码非常有用。即使没有调试器,也可以使用 shell 导航程序内环境并弄清楚发生了什么。到目前为止,一切都很好。

现在是挑战。

我正在使用的软件(顺便说一下,它是用 Django 编写的)使用某种调度机制,然后与另一个Python 进程对话,除了编辑它的代码之外,我无法控制它。除了发送给它进行处理的变量之外,我没有任何输入。

但是,我不知道代码是如何工作的,因为文档很差,所以我想用这个code.interact方法来解决问题。

但是这个过程是由一些特殊的调度软件在后台某个地方启动的,所以流程不会从 Django 应用程序到我希望检查的部分。相反,会发送一个信号和对象,然后在一个完全不同的进程中的任意时间(10-200 毫秒之间的任意时间)运行它们。当接收到信号和对象时,stdin/stdout 就完全不在了。

因此,我认为code.interact可以通过指定readfunc参数来使用文件句柄或 Unix 套接字,而不是使用 stdin/stdout 与之通信。我已经通过open()文件和套接字尝试过这个,但无济于事。

现在我试图让它仅仅从 Django 进程本身工作,所以即使是调度问题也是不可能的,虽然交互式 shell 确实启动了,但它立即关闭,既不接受带有命令作为内容的文件,也不接受Python 命令通过管道传输到的 Unix 套接字。

使长话短说; 是否可以与通过code.interactstdin/stdout 以外的其他方式调用的交互式 shell 进行通信?如果是这样,怎么做?

提前致谢。

0 投票
3 回答
106 浏览

c - select() 语句的问题

我有一个程序正在使用 select() 来轮询准备连接的套接字。

我有另一个绑定到套接字并发出 send() 命令的程序。

我的问题是文件描述符是否可以跨两个这样的可执行文件工作。

即,如果我将程序 A 中的文件描述符 5 添加到 FD_SET,并且程序 B 中的套接字 fd 为 5,这是否意味着该套接字上的 send() 将唤醒正在对包含 5 的 FD_SET 进行选择的程序 A?

谢谢

0 投票
0 回答
143 浏览

unix-socket - trying out unix network programming

I have been studying unix network programming and have been running servers on 127.0.0.1. But i want to try it on a bigger scale just to spice things up and also get more practical. So, i want host my server applications out on the net. I have heard that there are servers out there which allow you to create an http page and upload it and then view it as an internet user. So, are there other such servers which sublet few ports so that people can run their applications on them.

Note: using my friends' computers as a remote device for server and then connecting to it is not feasible as they use Windows and i have to run unix server

UPDATE: If my question was not clear, here is an another way i can put it in.

There are services running on ports of different hosts on the internet..like smtp server on port 25 at a particular ip...we can telnet to port 25 of that ip and communicate with that service...in the same way are there any sites which provide a particular port and an ip, so that i can upload my service's object file on that host by ftp, cause that service to run on my assigned port and then using my client on my computer connect to that service over the internet

0 投票
1 回答
1785 浏览

c - Unix Sockets 的缓冲特性

有谁知道发送小块数据(几个字节)时 Unix 套接字的缓冲特性?

当我使用 TCP 套接字时,我可以禁用 Nagle 算法以防止数据传输中的延迟。但是 Unix 域套接字没有等效的功能(据我所知)。

0 投票
1 回答
213 浏览

http - 通过域套接字的 HTTP

我正在编写一些包含两个组件的桌面软件。组件 B 查询组件 A。原则上,创建 Web 服务似乎是进行 IPC 的理想方式。数据模型适合,有现成的客户端和服务器库,一种众所周知的编码和解码参数的方法等。

但是在网络套接字上设置 HTTP 服务器似乎不适用于本地应用程序。例如,我选择什么端口?我真的不希望人们能够从外部扫描并与应用程序交谈等。

所以我在想我也许可以通过域套接字执行 HTTP。这有任何意义吗?它有什么优先权吗?是否有可用于 IPC 的等效协议,它具有与 HTTP 相同的属性(对指定资源 (URI) 的请求、编码参数、响应)?

寻找 C 库(可能还有 Go 和 ObjC 以获得奖励积分)。

0 投票
1 回答
1098 浏览

posix - SCM_RIGHTS 有什么可移植的意义吗?

我了解如何使用 SCM_RIGHTS 类型的辅助数据在 Linux 上的进程之间发送文件描述符。但所有 IEEE Std 1003.1-2008 不得不的是:

SCM_RIGHTS

这意味着什么?SCM_RIGHTS 类型的辅助数据有任何可移植意义吗?