问题标签 [socketpair]

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 投票
1 回答
708 浏览

windows - 使用 Windows、IPC::Open3 和 IO::Socket->socketpair() 时,Perl 选择在 sysread 上返回 undef

我发现了这个示例(由@ikegami 发布),说明了一种在使用套接字的 Windows 上使用 IPC::Open3 的方法。问题是,当我运行它时,我得到一个错误一个现有的连接被远程主机强行关闭sysread。该命令运行,select工作正常,但sysread得到的是一个undef而不是预期0的文件结尾。对于所有命令,此行为并不相同。如果我将命令更改为echo Hello World!它不会导致错误。知道这里发生了什么吗?

以下是示例中的代码:

0 投票
2 回答
1399 浏览

system-calls - 调整终端大小时,ncurses 中断系统调用

我对 ncurses 有疑问,在网上找不到解决方案,所以我编写了以下小程序来演示该问题。

您可以通过以下方式编译它:

它通过分叉到一个定时器进程来显示一个整数计数器,该计数器每秒递增一次,该进程通过套接字对定期向父进程发送一个字节。您可以通过按 CTRL+C 退出它。

当您调整终端大小时,您应该会收到一条“系统调用中断”的错误消息。因此,在调整大小时,读取调用会被 SIGWINCH 中断。但是我怎样才能避免这种情况呢?或者系统调用被中断是否常见?但是,由于文件描述符在中断后似乎已失效,因此我将如何处理中断的系统调用以继续递增计数器。

如果您使用非阻塞套接字,您将获得“资源暂时不可用”。

我使用的是稳定的 debian wheezy,所以 ncurses 版本是 5.9-10,libstdc++ 版本是 4.7.2-5。

谢谢!

问候

0 投票
1 回答
425 浏览

rust - Using socketpair() under Rust

How can you call Linux' socketpair() command in rust? I was not able to find it in the documentation.

0 投票
1 回答
994 浏览

python - Python:AttributeError:'module'对象没有属性'socketpair'

我想socketpair在我的“发现和学习”python 程序语言中尝试“”功能。我使用以下命令创建套接字对:

然后我得到错误:Python: AttributeError: 'module' object has no attribute 'socketpair'

我在 Eclipse 中工作,在 Windows 中。我认为 socketpair 只能在 UNIX 环境中工作,但 socket 模块应该包括在内socketpair

我应该如何解决它?

谢谢

问候

0 投票
1 回答
801 浏览

c++ - 从管道或套接字对读取一端关闭直到到达 EOF 是否安全?

考虑以下示例代码:

显然,代码运行良好,但这并不意味着它不是 UB。

在手册页中找不到任何内容,这保证了当sv[ 0 ]关闭时,read仍然能够从 读取由sv[ 1 ]发送的所有内容send


也许可以这样问这个问题 -作为read返回0EOF原样socketpairSOCK_STREAM我希望EOF一旦从套接字读取所有内容并且另一侧关闭,它将被“命中”。这个对吗?

0 投票
1 回答
2108 浏览

c++ - linux:fork/socketpair/close 和多个子进程

现在,我尝试了解子进程的stdin/out/err的分叉/重新绑定,并在不泄漏任何资源的情况下正确管理资源(文件句柄、套接字)。

还有一些问题:在创建套接字对和分叉后,我在父 5 文件描述符和子文件中(stdin/out/err/socket1/socket2)。在子进程中,我需要关闭套接字对的“父”端。我在 fork 和dup()套接字的“客户端”之后close() stdin/out/err三次。在dup()之后,我是否需要关闭 dup 的“源”?我想是的......但我是对的吗?

当我以这种方式(见下文)创建第二个孩子时,资源处理是否正确?我试图严重依赖 RAII 来不泄漏任何 fds,但对吗?我错过了一件大事吗?

再见,提前感谢!

乔治

编辑:我修复了 rebind_and_exec_child 中的错误。

0 投票
1 回答
292 浏览

ruby - 在 Ruby 中测试一个真正的 TCP 套接字

我有一个通过机架劫持在套接字上运行的程序。我想使用真正的 TCP 套接字测试该程序,并且我想接收它发送到套接字的内容并检查我是否得到了正确的结果。

我该怎么做?我尝试使用 Socketpair:

接着

但我得到的只是Protocol not supported - socketpair(2)

0 投票
1 回答
268 浏览

java - 如何在 UDP 无连接客户端的固定端口上运行客户端程序 - java 中的服务器对

我正在尝试了解 UDP 无连接客户端 - 服务器对。我在《计算机网络:自上而下的方法》一书中得到了一些代码。程序如下:- UDPServer.java:

UDPClient.java

在给定的代码中,我们已经修复了服务器的端口号,即 9876。我很想知道如何修复客户端的端口,就像我们在给定的 java 程序中为服务器所做的那样,以便可以将消息返回到特定端口上的客户端。

例如,如果客户端将向服务器发送 UDP 消息,则服务器将在端口号 9876 上启动并运行,并在端口 9877 上将原始消息返回给客户端。请帮助。

0 投票
1 回答
406 浏览

c++ - 使用 socketpair 时 SO_SNDBUF 的行为

我想使用 socketpair 在两个线程之间发送消息。我正在编写代码以找出可以使用套接字对发送多少条消息,消息大小为 16 字节(两个指针)。我使用的代码如下:

没有线程/进程正在监听 readFD。所以当 writeFD​​ 的发送缓冲区已满时,while 循环应该退出。

可以看到以下输出:

我预计发送的消息数量约为 4032 ( 129024/(2*16) )。

我在这里想念什么?在 AF_LOCAL 中发送消息时是否使用了固定大小的标头?

0 投票
0 回答
260 浏览

linux - Golang中许多unix管道(sockerpair)通信请求时读/写管道延迟

我在 Golang 中遇到了 sockerpair 的性能问题(也称为 unix 管道进程间通信)。

如果有很多请求发送到管道,延迟会很长。一个进程发出大约 10K 请求;然后管道的读取器进程(sockerpair reader)将长时间停滞。现在,我正在使用syscall.read()and syscall.write()

有什么建议可以改善管道中的读取延迟吗?我尝试过使用syscall.Recvmsgand syscall.Sendmsg,但它们在这里没有帮助,因为我不熟悉如何正确设置标志。

以下是 stace 日志,对于每一行,第一个元素是 PID,第二个是在这条指令上花费了多少时间,第三个是进程的处理程序,第四个是操作

正常的:

异常(或长时间延迟)的: