问题标签 [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.
c - unix域套接字VS命名管道?
在查看了一个名为 socket 的 unix 之后,我认为它们是命名管道。我查看了名称管道,并没有看到太大的区别。我看到它们的初始化方式不同,但这是我唯一注意到的。两者都使用 C 写/读功能,工作方式与 AFAIK 相似。
unix域套接字和命名管道有什么区别?我什么时候会选择一个而不是另一个?我应该默认使用哪个(比如我在 C++ 中默认使用向量而不是使用双端队列、列表或其他任何我需要的东西)?
linux - Unix 域套接字如何区分多个客户端?
TCP 具有元组对(IP 地址/端口/类型)来告诉一个客户端与另一个客户端。UDP 传递客户端 IP 和端口。unix 域如何跟踪不同的客户端?
换句话说,服务器创建一个绑定到某个路径的套接字,比如 /tmp/socket。2 个或更多客户端连接到 /tmp/socket。下面发生了什么来跟踪来自 client1 和 client2 的数据?我想网络堆栈在域套接字中没有任何作用,那么内核是否在这里完成了所有工作?
是否有像 IP 协议格式和 TCP/UDP 格式一样的 unix 域协议格式?域套接字数据报协议的格式是否在某处发布?每个unix都是不同的还是POSIX之类的东西标准化了它?
感谢您的任何照明。我找不到任何解释这一点的信息。每个来源都只是掩饰了如何使用域套接字。
ruby-on-rails - Rails 和 Ruby EventMachine 进程之间的通信
我有一个 Rails 应用程序,它需要从运行 EventMachine 的本地运行进程请求数据。实现此请求/响应的最佳方式是什么?
php - socket_read() 中 $type 参数的含义
我尝试使用 PHP 套接字创建从 ac# 应用程序到 PHP 5.3 脚本的 tcp/ip 套接字连接。c# 应用程序应将 JSON 字符串发送到 PHP 脚本。
我关于socket_read 手册的问题:它们是什么意思:
PHP_BINARY_READ 究竟是什么,为什么在使用这个参数时我应该使用 recv() 函数?
非常感谢任何帮助。
linux - 有没有办法获取unix套接字连接另一端的uid
有没有办法让 UNIX 域套接字侦听器只接受来自某个用户的连接(chmod
/chown
不适用于抽象套接字 afaik),或者换句话说,获取传入连接的 uid(在 Linux 上)?
Dbus 在 Linux 上使用抽象的 unix 套接字,有一个函数GetConnectionUnixUser
被 polkit 用来确定调用者。所以我想dbus-daemon
必须有办法做到这一点。有谁知道它是如何工作的?
npapi - Unix 域套接字和 NPAPI
我正在寻找源代码或库以通过 NPAPI 将 Unix 域套接字公开给我的 Google Chrome 扩展。
是否已经存在类似或相关的东西?
linux - SO_PEERCRED vs SCM_CREDENTIALS - 为什么两者都有?
SO_PEERCRED 是获取连接的 AF_UNIX 流套接字的 pid/uid/gid 的简单方法,SCM_CREDENTIALS 或多或少相同,但更复杂(各种辅助消息)。显示两种方式的示例链接。
- 为什么有两种方法可以获取或多或少相同的信息?
- 为什么更舒适的 SO_PEERCRED 没有在 unix(7) 联机帮助页中列出?
- 哪个在实际应用中使用得更多?
我应该使用什么?
python - Twistd 套接字所有权
我有一个守护进程,它监听/var/run
. 我使用 init 脚本(显然是 root)启动守护进程,并且我正在使用twistd
--uid
and--gid
选项将权限授予非特权用户。但是,该套接字仍归root:root
.
第二个守护进程,作为同一个非特权用户运行,需要访问套接字。我现在将套接字所有权更改为daemon:daemon
init 脚本,但这并没有让我觉得这是一个非常优雅的解决方案。
daemon:daemon
有没有办法让文件中拥有的套接字tac
?
c - Unix域套接字(C)-客户端在connect()上“删除”套接字?
简明扼要地列举这可能有点困难,但我会尽我所能对领域和问题的新手理解。
我有 2 个进程,一个首先取消链接、创建套接字描述符、绑定、侦听和接受本地 unix 套接字的流服务器。服务器的工作是接受连接,发送任意数据,也接收任意数据。除了初始设置外,客户端进程的工作与服务器相同;创建一个套接字描述符,并连接到 unix 套接字。
启动服务器后,我可以验证正在创建 unix 套接字。启动客户端后,我收到一条connect()
错误消息,指出文件或目录不存在或无效。是的,尝试像以前一样定位unix套接字,文件不再存在......
有谁知道导致这种行为的错误的原因或位置?
如果代码片段有助于澄清,我当然也可以发布这些。
可能还值得注意的是,我正在使用修改后的版本getaddrinfo
来专门填充addrinfo struct
unix 域。
java - Unix域套接字上的Broken Pipe的原因是什么?
我有一个服务器应用程序,它接收请求并在 Unix 域套接字上转发它们。这在合理的使用情况下非常有效,但是当我对几千个请求进行一些负载测试时,我收到了 Broken Pipe 错误。
我正在使用带有junixsocket的 Java 7来发送请求。我有很多并发请求,但我有一个由 20 个工作人员组成的线程池,它们正在写入 unix 域套接字,因此不存在并发打开连接过多的问题。
对于每个请求,我打开、发送和关闭与 Unix 域套接字的连接。
可能导致 Unix 域套接字上的管道损坏的原因是什么?
更新:
如果需要,放置代码示例:
我有一个由 20 个工作人员组成的线程池,他们同时执行上述操作(因此最多 20 个并发连接到同一个 Unix 域套接字),每个连接都打开、发送和关闭。这对于突发 10,000 个请求的负载测试效果很好,但是当我再添加几千个请求时,我突然收到此错误,所以我想知道它是否来自某些操作系统限制。
请记住,这是一个 Unix 域套接字,而不是网络 TCP 套接字。