我正在尝试将Ruby与服务器配合使用。我正在从玩家处获得回车或字符串,以便服务器玩起 war 之手(纸牌游戏)。
真正令人沮丧的是,我正在使用read和write_nonblock,并且不断遇到错误,这些错误我不知道为什么会出现,因此不知道如何解决。
Errno::EAGAIN: Resource temporarily unavailable - read would block #etc. etc.
因此...如何正确使用读写non_block在服务器和客户端上发送和接收数据(以便触发事件)? (我是一名新程序员,所以解释越简单越好。)
最佳答案
需要一对方法#write(read)_nonblock
,以便在尚未准备好发送或接收数据的情况下对所需的代码进行处理。 ruby
docs在方法上说以下内容:
If the exception is
Errno::EWOULDBLOCK
orErrno::AGAIN
, it is extended by IO::WaitReadable. So IO::WaitReadable can be used to rescue the exceptions for retrying read_nonblock.
只是捕获
Errno::EAGAIN
异常。注意,
retry
关键字使方法类似于通常的#write(read)
:begin
io.write_nonblock
rescue Errno::EAGAIN
retry # or do something else
end
关于ruby - 如何在服务器/客户端上使用Ruby的write_nonblock/read_nonblock?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20604130/