问题标签 [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 投票
3 回答
14705 浏览

mysql - 强制 MySQL 仅使用 unix 套接字

我希望我的 MySQL 服务器只使用 unix 套接字,而忽略 TCP 网络,所以我将这一行添加到我的配置中/etc/my.cnf

但是netstat告诉我 MySQL 仍然使用 TCP 端口 3306:

0 投票
1 回答
591 浏览

c - Telnet 处理 wc 和任何从键盘读取输入的命令

我是 UNIX 新手,也是使用 C 语言编程的新手。

我想做的是简单的实现telnet

我在双方(服务器和客户端)都建立了所有必需的连接。

在服务器上:我收到的任何请求,我都会fork有一个新进程来处理它

这种处理来自客户端的命令的方法:

该程序可以使用任何命令成功运行,但是当客户端编写任何命令时,例如:wc, cd, bash (to run any other shell). 程序挂了。

这是建立连接后的客户端。

0 投票
1 回答
4135 浏览

c - 使用数据报的并发服务器

客户端必须向服务器发送 2 个字符串,服务器必须向客户端发送回一个字符串,并且还要并行处理客户端。这两个实体在 Unix 下使用数据报交换数据。我的问题是,当我使用线程时,我无法将数据发送回客户端,也无法读取它。即使我不使用线程,我也无法正确地将消息发送回客户端。

服务器是:

Perror 显示 recv: 非套接字上的套接字操作

最后perror()显示发送:非套接字上的套接字操作。这也导致客户端无限等待来自服务器的字符串。

控制台打印的内容:

客户是:

0 投票
1 回答
6236 浏览

c - Unix域套接字客户端将无法连接

我一直在阅读“Linux 编程接口”以尝试了解套接字,特别是 unix 域套接字。我已经阅读了第 56 章,其中解释了一些一般概念,并且我正在尝试实现第 57 章中的客户端-服务器示例。

服务器代码似乎工作正常,但是当我尝试连接客户端时,调用connect()失败。

这是服务器代码:

客户端代码在这里:

当我运行服务器时,我看到:

当我运行客户端时,我看到:

如果有人可以帮助我解决这个问题,我将不胜感激。

0 投票
2 回答
1590 浏览

zeromq - 我可以通过 0mq(zeromq)ipc 套接字传递文件描述符吗?

我有一个主进程和几个工作人员,使用 0mq 'ipc://' 套接字(UNIX 域套接字)进行通信。我想将文件描述符从主服务器传递给工作人员,以及一条消息。我知道“原始” UNIX 域套接字可用于将文件描述符从一个进程传递到另一个进程,但我可以使用我的 zeromq 套接字吗?

我不关心可移植性,坦率地说,我不关心它是否是一个有点脏的解决方案。有什么办法吗?

提前致谢。

0 投票
1 回答
2196 浏览

c - 文件系统上的 UNIX 套接字在哪里?

我正在使用 Unix 域套接字。想知道它在系统中的位置。

如果我使用系统调用创建套接字对

我读过它是未命名的套接字(未使用绑定绑定到路径名的套接字)。另一方面,命名套接字或更好的套接字使用绑定调用绑定到文件系统路径名,存储在我们指定的某个目录中。例如

这里 sun_path 可以是 /tmp/sock 文件。

所以,同样,我想知道未命名的套接字在系统中或内存或内核中的任何位置是否有任何位置?

提前致谢。

0 投票
2 回答
4011 浏览

c - UNIX 套接字:是否可以欺骗 getsockopt() SO_PEERCRED?

是否有(兼容的)方法来欺骗(以 root身份)可以通过选项获得的unix 套接字(文件系统套接字)对等凭据getsockopt()SO_PEERCRED

背景:
我需要连接到一个服务器应用程序(我无法修改),它检查UID通过SO_PEERCRED. 我想欺骗信息,以便能够以root身份连接到应用程序。

更新

为了澄清这个问题
我正在寻找一种服务器查看特定对等点UID/的非侵入性方式GID。不鼓励需要更改内核(或使用内核模块)或以任何方式更改服务器进程或其加载/链接进程LD_PRELOAD(系统调用拦截等)的解决方案。

基本上,该解决方案应该在没有任何特殊要求的任何 linux(或一般的 unix)服务器上运行时工作。服务器进程可能已经在运行。

0 投票
5 回答
9870 浏览

node.js - 在 Forever 下运行的 NodeJS 上优雅地关闭 UNIX-socket 服务器

我有一个 NodeJS 应用程序,它设置了一个 UNIX 套接字来公开一些进程间通信通道(某种监视的东西)。UNIX-socket 文件放置在os.tmpdir()文件夹(即/tmp/app-monitor.sock)中。

我使用信号处理(SIGINT、SITERM 等)来优雅地关闭我的服务器并删除一个套接字文件。

我的应用程序正在运行forever start ...以监控它的生命周期。

我的命令有问题forever restartall。当永远这样做restartall时,它使用 aSIGKILL来终止所有子进程。SIGKILL无法由进程处理,因此我的应用程序在没有任何关闭程序的情况下死亡。

问题是使用时未删除的套接字文件SIGKILL。子进程重启后,新服务器无法启动,因为listen调用会EADDRINUSE报错。

我无法在应用程序启动过程中删除现有的套接字文件,因为'我不知道它是真正工作的套接字还是以前不干净关闭的一些痕迹。

所以,问题是......处理这种情况的更好方法是什么(SIGKILL 和 UNIX-socket 服务器)?

0 投票
1 回答
501 浏览

linux - How to use abstract names of unix domain sockets with fcgi in Perl in Linux?

In Linux, in Perl, using the FCGI module, using the Open Socket function, is it possible to create an unix domain sockets using abstract names?

I tried to create a socket starting with a null character \0wibble \zwibble \x{0}wibble and it didn't work!

It worked only using pathname, as described in unix(7):

Thank you!

0 投票
1 回答
703 浏览

objective-c - 本地 http 服务器生成的自定义 FCGI 应用程序的套接字路径是什么?(即apache/mod_fcgid、lighttpd/mod_fastcgi等)

我正在开发一个用objective-c/cocoa 编写的fastcgi 开发工具包,它模仿AppKit/UIKit 的行为和结构(应用程序委托、运行循环、事件队列等)。我已经完成了关于 fastcgi、libfcgi、使用 libfcgi 的 fastcgi 目标 c 实现的功课,但我很遗憾地意识到,为了使其 100%“可可”,我必须自己实现协议,从从头开始(libfcgi 被设计为“循环”的方式与 CoreFoundation RunLoops 和事件队列不兼容)。

话虽如此,根据 fastcgi.com 上的文档(FCGI 白皮书),fastcgi-responder 应用程序有以下几种情况:

  1. 该应用程序是 Web 服务器的本地应用程序,并由后者根据需要生成,以满足传入的请求
  2. 该应用程序对于 Web 服务器来说是本地或远程的,但 Web 服务器假定它已经在运行并通过域套接字或 tcp/ip 套接字与其通信。

我对第二种情况很好,因为我可以控制我希望我的应用程序监听的套接字路径/IP 地址和端口:我知道我的通信通道在哪里。

我遇到的问题是第一种情况。我一直在筛选fci_stdio.cfcgiapp.c查看FCGX_Accept_r,等FCGX_InitRequestFCGX_Stream我似乎无法找到它试图读取的套接字。

不,这不是stdin因为它被劫持并“封装”到fastcgi.com 文档中指定的FCGI_FILE结构中。fcgi_stdio.h我承认我的 posix 编程时代已经远远落后于我,而且我有点生疏了。我肯定错过了一些东西。

我试过stdin在我的应用程序中收听,它出现了 posix 错误 57(未指定的错误)并且没有数据。这是我在示例应用程序的日志中获得的输出示例:

  • 请不要被消息名称误导:它们与 AppKit/UIKit 完全相同,但它们不是来自NSApplication. ** 它可以超时,因为我没有在代码中做任何事情来响应请求或将任何数据发送回服务器(我离那个很远)。

如果服务器根据请求动态创建套接字,应用程序如何知道要监听(读取/写入)的套接字路径?