Yal*_*llo 0 ruby error-handling iostream nonblocking send
我正在尝试将Ruby与服务器一起使用.我从玩家那里得到一个输入或一个字符串,这样服务器就会玩一场战争(纸牌游戏).
真正令人沮丧的是我正在使用read和write_nonblock,并且我一直遇到错误,我不知道它们为什么会出现,因此不知道如何解决它们.
Errno::EAGAIN: Resource temporarily unavailable - read would block #etc. etc.
Run Code Online (Sandbox Code Playgroud)
那么......我如何在服务器和客户端上正确使用读写non_block来发送和接收数据(所以我可以触发事件)?(我是一个新的程序员,所以解释越简单越好.)
需要这对方法#write(read)_nonblock,以便在数据未准备好发送或接收时,对所需的代码进行一些处理.该ruby 文档说的方法如下:
如果异常是
Errno::EWOULDBLOCK或Errno::AGAIN,它由IO :: WaitReadable扩展.因此IO :: WaitReadable可用于挽救重试read_nonblock的异常.
只是陷阱Errno::EAGAIN异常.
请注意,retry关键字使方法像往常一样#write(read):
begin
io.write_nonblock
rescue Errno::EAGAIN
retry # or do something else
end
Run Code Online (Sandbox Code Playgroud)