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

python - 创建链接或更改 python-mysql 套接字位置

在 Python 中测试 SQLalchemy 时,我遇到了与我之前遇到的类似的问题。然而,这一次,我无法轻松地将 mysql-socket 路径添加到 MySQLdb 连接方法中。

在我的 Mac 上,mySQL 套接字位置位于:/opt/local/var/run/mysql5/mysqld.sock

除非明确提到上面的路径,否则 mysql-python 库会查找 /tmp/mysqld.sock

这导致 sqlachemy 抛出:

在我通过将 unix_socket 参数添加到连接方法来解决这个问题之前

我想知道的是如何对 MySQLdb 库设置或存储这些设置的文件(如果在任何地方)进行永久更改,而不总是必须添加额外的参数。

0 投票
3 回答
3113 浏览

ruby-on-rails - 104:对等方重置连接:nginx + rainbows + 超过 1 mb 的上传

我正在运行 ThreadPool rainbows + nginx(unix 套接字)

在大文件上传时,我在 nginx 错误日志中得到以下信息(应用程序日志中没有任何内容):

浏览器收到响应:

为什么会这样?

  • “client_max_body_size 80M;” 在 nginx 中同时设置 http 和服务器级别(以防万一)
  • nginx 通过 unix 套接字与彩虹通信(上游套接字 + 位置@proxy_pass)
  • 我在其他日志中看不到任何内容。我检查过:
    • 彩虹日志
    • 工头日志
    • 应用程序日志
    • dmesg 和 /var/log/messages
  • 上传文件时会发生这种情况 ~> 1 MB 大小
0 投票
1 回答
1659 浏览

php - PHP如何优雅地关闭本地套接字连接......?

我有一个 PHP 客户端通过纯文本 Unix 域套接字连接到本地 C 服务器程序。但是,我可以让它很好地关闭的唯一方法是如果我完成套接字会话:

我想像我的 C 客户端一样优雅地关闭它:-

但是,PHP 似乎没有直接的套接字 poll() 等效项。如何让 PHP 优雅地关闭我的本地套接字?

0 投票
1 回答
594 浏览

c - 如何获取 telnet 会话的远程端口号?

我正在尝试获取远程用户的 telnet 连接使用的 TCP 端口号。

在 ssh 连接的情况下,我可以从 SSH_CLIENT 环境变量中获取它,但是在 telnet 连接的情况下如何获取它。是否有任何 C/Unix API 来获取它。

我尝试了以下代码:

功能适用于 ssh 连接。但是对于 telnet 连接,我无法获取会话中使用的远程端口号。

登录 Telnet 案例:

(port_session_connected):getpeername()成功(port_session_connected):远程IP:0.0.0.0(port_session_connected):远程端口:0(port_session_connected):家庭:1(port_session_connected):getnameinfo()返回:5

getnameinfo() 失败,err=5,即 EAI_FAMILY /* ai_family not supported */ Family is 1,即 AF_UNIX。

是的,getnameinfo() 仅适用于 AF_INET 和 AF_INET6。

是否有任何 API 或无论如何可以获取 telnet 远程端口。

谢谢

0 投票
2 回答
1733 浏览

tcp - 使用 Unix 域套接字与 TCP 套接字建立连接的成本是多少?

奇怪的是,我没有通过谷歌搜索找到此信息。使用 Unix 域套接字与 TCP 套接字建立连接的成本是多少?

现在我必须使用 TCP 套接字进行连接池,因为重新连接非常昂贵。我想知道是否可以通过简单地切换到 Unix 域套接字并摆脱连接池来简化我的客户端。

0 投票
1 回答
1115 浏览

perl - Perl IO::Socket::UNIX Connect with Timeout 给出 EAGAIN/EWOULDBLOCK

Ubuntu Linux,2.6.32-45 内核,64b,Perl 5.10.1

我将许多新的 IO::Socket::UNIX 流套接字连接到服务器,并且大多数情况下它们工作正常。但有时在更快的处理器上的重线程环境中,它们会返回“资源暂时不可用”(EAGAIN/EWOULDBLOCK)。我在 Connect 上使用了超时,因此这会导致套接字在连接期间进入非阻塞模式。但是我的超时时间没有发生 - 它不会等待任何明显的时间,它会很快返回。

我看到在 IO::Socket 内部,它尝试连接,如果它因 EINPROGRESS 或 EAGAIN/EWOULDBLOCK 失败,它会进行选择以等待设置写入位。到目前为止,这似乎很正常。在我的情况下,选择很快成功,这意味着写入位已设置,然后代码尝试重新连接。(我猜这是试图通过错误滑动来获取任何错误?)无论如何,重新连接再次失败并使用 EAGAIN/EWOULDBLOCK。

在我的代码中,这很容易通过重试循环来解决。但我不明白为什么当套接字变为可写时,套接字不可重新连接。我认为选择保护对于非阻塞连接总是足够的。显然不是; 所以我的问题是:

  • What conditions cause the connect to fail when the select works (the write bit gets set)?
  • 有没有比旋转和重试更好的方法来等待连接成功?纺纱浪费循环。相反,我希望它阻止诸如选择/轮询之类的事情,但我仍然需要超时。

谢谢,

——史蒂夫

0 投票
2 回答
4313 浏览

linux - 带有守护进程的 Linux IPC 多客户端

这真的很基本,但我现在正在空白。

我有一个守护进程,希望多个客户端能够与之交谈。我希望客户端能够启动然后使用共享库,本质上是向守护进程“注册”。守护进程将为这个新客户端生成一个线程,并在客户端和新线程之间提供一个通信管道。

我正在考虑将 unix 数据报套接字作为所有客户端最初使用的“注册通道”,然后切换到特定于客户端的通道,但随后无法弄清楚我如何为新数据报套接字创建唯一名称而不先设置它们.

  • 服务器和客户端在同一台机器上,更喜欢使用数据报套接字,而不必处理将流分解为数据包。
  • 将来回发送(非常)高速率的小消息。
0 投票
3 回答
4564 浏览

c - Unix C 套接字服务器不接受连接

这是交易,我正在用 C 语言(使用 unix 系统调用)编写一个简单的 tcp 套接字服务器,但我无法接受连接。

据我所知,我很好地完成了服务器初始化,但是当我尝试连接到我打印出来的端口(见下面的代码)时,它拒绝了,好像什么都没有。

更重要的是,当我 netstat 甚至没有使用该端口时。我目前的设置并没有抛出任何错误,我已经完全没有想法了。

0 投票
2 回答
1568 浏览

c - 使用 unix 域套接字编写单独的消息

我目前正在学习使用 unix 域套接字编程,对此我有疑问。分离消息的标准方法是什么?例如,服务器写入两条消息,客户端需要执行两次读取以获取消息。我想我可以通过总是在每条消息的末尾附加一个特定的字符序列来“定义”我自己的协议,但这似乎不正确。写入套接字时,null char 似乎被丢弃了。我将非常感谢您的澄清,尤其是在接下来的 2 小时内:D。

0 投票
1 回答
9773 浏览

haskell - 如何在 Haskell 中使用 hedis 通过 Unix 域套接字连接到 redis 服务器?

我正在寻找如何使用hedis通过Unix域套接字连接到redis服务器,如hackage页面中所宣传的那样:

通过 TCP 或 Unix 域套接字连接:
TCP 套接字是连接到 Redis 服务器的默认方式。对于到同一台机器上的服务器的连接,Unix 域套接字提供比标准 TCP 连接更高的性能。

从 和 的构造函数看来,我们应该填写,ConnectInfo因为它的类型有一个名为 的构造函数。但它只显示是一个,没有格式等细节。defaultConnectInfoconnectPortPortIDUnixSocketUnixSocketString

那么如何填写connectPortto connect via Unix domain socket呢?谢谢。


更新:我试过了,发现它并不难。下面是我的hello world。