问题标签 [mio]
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.
rust - 如何在同一个 MIO 事件循环中创建 TcpSocket 和 TcpStream?
我可以创建相同的服务器Server
或Client
使用不同的套接字吗?
喜欢A -> B -> C
这里,A 是服务器 B 的客户端,B 是 A 的服务器,但是服务器 C 的客户端。
如何在同一个MIO event_loop中注册这两个?
rust - 如何从超时的 mio TcpStream 中读取?
我正在使用Mioco。mio::net::tcp::TcpStream
没有实现Clone
,所以似乎不可能TcpStream
跨多个线程/协程共享 a (或者如果可能的话,我不确定如何;我对 Rust 很陌生)。因此,我假设要同时读取/写入单个TcpStream
,有必要使用单个协程来进行读取和写入。
为了避免在传入数据不频繁时无限期地阻塞读取,似乎有必要在从TcpStream
. std::net::TcpStream
已经set_read_timeout
实现了这一点,但我找不到mio::net::tcp::TcpStream
. 我该怎么办?或者有没有办法TcpStream
在多个协程之间共享 mio,避免超时?
linux - MIO EventLoop 没有为 TcpStream 运行
我是一名正在努力解决异步 IO 问题的 Rust 初学者。我决定使用mio。
我已经阅读了一些源代码+教程,但仍然有一些我不明白的基本部分。我正在使用netcat -k -l 127.0.0.1 9999
. 然后我用cargo
(下面的代码)运行简单的测试。我期待看到“准备好”或“滴答”的恐慌。但它永远不会发生,测试会永远运行。
rust - 如何在 hashmap 字段中保存对处理程序的引用
我正在学习 Rust 并尝试编写一个 websocket 服务器。逻辑如下: WSConnectionFactory 创建 WSHandler 处理传入消息并根据任意规则将它们发送给其他客户端。问题是我不知道如何实现这种行为。
限制:我无法更改 Factory 和 Handler 特征的签名,因为它们是由ws-rs库提供的。
问题:如何使用 RefCell/Cell 实现这一点?
rust - 如何处理mio中的错误?
我正在 mio 之上构建一个多线程异步 HTTP 服务器。
我应该如何处理客户端TcpStream
连接上的事件?
- 因为
is_readable
它非常简单:我阅读请求并编写响应。 - 对于其他类型我不确定。
shutdown()
如果我得到is_error
或,我应该流is_hup
吗?怎么样is_none()
?
rust - 负载测试后,每个新的 mio 连接都会立即挂断
我使用 mio 在 Rust 中编写了一个多线程异步 HTTP 服务器。当我运行负载测试(使用围攻)时,服务器在第一次负载测试时工作正常,但是当负载测试完成时,对服务器的所有请求都开始失败。
使用一些日志记录,我注意到我获得的每个新连接都会accept()
立即收到一个挂断事件。服务器连接本身不会收到任何错误或挂断事件。
我在 OS X 10.11 El Capitan 上运行 Rust 1.12.0 和 mio 0.6
这是我的服务器的主要事件循环:
GitHub 上提供了我正在使用的示例 webapp 的完整代码。
负载测试命令:
rust - 我可以在多个 mio Poll 对象上注册一个 TcpListener 吗?
我可以TcpListener
在多个 mioPoll
对象上注册相同的对象(Poll
多线程服务器的每个线程一个)吗?
当我尝试时,我收到错误:
线程'main'在'调用
Result::unwrap()
一个Err
值时惊慌失措:错误{repr:自定义(自定义{种类:其他,错误:StringError(“套接字已注册”)})}',src/libcore/result.rs:788
这是预期的行为吗?
unicode - 如何从 mio 事件循环中的无缓冲文件中读取 Unicode 代码点?
我想使用 mio crate 来读取按键,因为它们以无缓冲的方式到达。我已经有了取消缓冲标准输入的代码,并且已经搭建了事件循环的脚手架:
如何实现标记的部分XXX
?有几个挑战:
- 我怎么知道要读取多少字节?我不确定mio会告诉我这个。
- 如何处理部分代码点,其中读取跨越多字节字符。
一种可行的解决方案是使用oneshot
事件而不是edge
事件,然后将每个事件的一个字节读入临时缓冲区。每次缓冲区作为一个完整的代码点有意义时,我都可以将其转换为 achar
并将其存储起来,并清除暂存缓冲区。
不过,这似乎有点低效。什么是最好的方法?
rust - 是否可以在 mio 中注册多个超时?
我在 mio 中编写了一个 TCP 服务器并注册了多个超时,但只有最后一次注册的超时触发。我的超时是否需要一个包装器来组合它们,或者是否有任何其他方法可以在 mio v0.5 中注册多个超时?
sockets - 如何接受客户端套接字,然后在 mio 中轮询 TcpStream?
我无法弄清楚如何接受客户端套接字,然后开始轮询TcpStream
使用 mio 0.6 返回的事件。
我试过这段代码,但一个事件Token(1)
永远不会到来。虽然accept
部分打印出来了,但客户端立即断开连接。
我不知道如何正确地做到这一点。