问题标签 [nonblocking]
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.
linux - 当另一端写入和关闭时,在 epoll 控制的非阻塞套接字上丢失字节
我有一个当前订阅的非阻塞套接字:
它接收几个 EPOLLIN,我非阻塞地读取它们直到 EAGAIN,然后我收到 HUP 和 RDHUP,有时还要读取几个字节。
另一面只是:
我已经在 epollin 和关闭时间的事件循环中直接尝试使用 msg_peek 进行 recv,并添加接收到的数据它并不总是收到 960,有时只有大约 480 个字节。
使套接字非阻塞或在发送和关闭之间的客户端中放置一个 sleep(1) 可以正常工作。
在我看来,与 epoll 相关的非阻塞套接字问题更多。像“nc -l -p port”这样简单的东西接收适当数量的字节。
c - 如何检查stdin是否仍然打开而不阻塞?
我需要用纯 C 编写的程序在标准输入关闭时停止执行。
在程序主循环中完成了无限期的工作,我无法在那里使用阻塞检查(如getc()
)(没有数据应该到达标准输入 - 它只是在未知时间内保持打开状态)。
我打算使用描述的功能来实现托管在 inetd、xinetd 或其类似物的网络守护进程——它应该在连接保持打开状态时在标准输出上发出数据,并在连接关闭时正确完成工作。现在我的程序被托管服务杀死,因为它在连接终止后不会停止。
我想知道fctntl()
将O_NONBLOCK
标志应用于标准输入描述符是否允许我read()
在非阻塞模式下使用函数?我应该select()
以某种方式使用吗?
PS 数据不是假设的,但可能会到达标准输入。一种非阻塞读出的方式将是该问题的答案。
c++ - WinCE 上的非阻塞键盘访问虚拟键盘
我正在拼命寻找一种解决方案,使我能够以非阻塞方式读取键盘事件。这些键盘事件是由VIRTUAL KEYBOARD
WinCE 设备自带的。我有一个在 C++ 中运行的控制台应用程序,要求用户通过菜单中的“ESC”、“U”和其他字符进行导航。我首先尝试使用 fread 和 stdin 并意识到它正在阻塞调用并等待回车。然后我尝试连接到 Windows 消息 WM_KEYUP,但我从未收到此 Windows 消息。此外,我尝试将 QtGUI 与事件 QKeyEvent 一起使用,但我从未收到任何事件。我想知道通常是否可以在 WinCE 设备上接收非阻塞键盘事件。如果您有任何建议,我将很高兴!
干杯,简
c# - 没有 while(true) 循环的 C# 非阻塞套接字
我只是想进行一些套接字编程,在 c# 中使用非阻塞套接字。我发现的各种样本,例如this,似乎使用了 while(true) 循环,但这种方法会导致 cpu 以 100% 的速度爆裂。有没有办法使用事件编程风格使用非阻塞套接字?谢谢
java - 如何在java中使一个接受的套接字非阻塞
我正在接受来自客户端的连接,然后将该连接的套接字传递给另一个对象,但是,该套接字需要是非阻塞的。我正在尝试使用getChannel().configureBlocking(false)
,但这似乎不起作用。它需要是非阻塞的,因为下面的方法每 100 毫秒调用一次。还有其他方法可以让我做到这一点吗?谢谢你的帮助!
python - Python套接字没有收到任何东西
我正在尝试从带有 python 的相机接收可变长度流,但会出现奇怪的行为。这是 Linux(Ubuntu 9.10)上的 Python 2.6.4(r264:75706)
该消息应该带有一个静态标头,后跟大小和流的其余部分。这是代码
使用此代码,我要么陷入“recv\'d 0 Bites”循环(这种情况很少发生),要么是这样:
这很奇怪(接收 0 个字节但退出循环)。转储的数据是错误的,在这种情况下是预期的
编辑 1:设备应该发送一个 JPEG 图像,前面有一个 10 字节的标头。当(如果)我通过第一个循环时,我需要检查此标头的正确性和大小信息。程序以错误的数据错误终止,转储文件是一堆二进制垃圾,所以我不知道我最后收到了什么。我很确定另一端的设备正在尝试发送正确的数据。
java - 我应该为 UDP 使用(非阻塞)NIO 吗?
根据这篇文章,UDP 不会阻塞。使用(非阻塞)NIO API for UDP 有什么优势吗?还是我应该只使用更简单的“传统”io API?
java - SSL 和 NIO 非阻塞套接字
您如何推荐制作一个高度可扩展的 SSL 客户端?
目前,我正在使用 plain Socket
s 连接到需要非 HTTP SSL 套接字的 Apple APNS 服务器。我曾考虑使用 NIO 库,但它缺少SSLSocketChannel
.
language-agnostic - 原子指令
原子指令是什么意思?
以下如何成为原子的?
测试和设置
从软件的角度来看,如果不想使用非阻塞同步原语,如何保证指令的原子性?是否只能在硬件或某些汇编级指令优化中使用?
ruby - 使用 Ruby 的“准备好了吗?” 带有gets、puts等的IO方法
标准 Ruby 库“io/wait”为 IO 对象提供了一个方法,ready?
如果有可用输入则返回非 nil,否则返回 nil 或 false。我知道一些方法,例如sysread
andsyswrite
与更高级别的方法一起使用并不安全,例如gets
and read
,并且想知道ready?
与更高级别的方法混合使用是否安全。ready 方法看起来相当有用,也许比依赖 更优雅IO.select
,但是,令人惊讶的是,我还没有看到它用得太多。文档中没有任何内容表明与read
or一起使用是不安全的gets
,我只是想确保我没有混合不兼容的方法,这些方法最终可能在读/写套接字时导致意外行为。
编辑:我想我应该提到我使用的是 Ruby 1.8.7。