だから、私は次のコードを持っています:
def LSCPHandler.send_message(message, hostname, port)
s = TCPSocket.open(hostname, port)
s.print message
ret = s.recv(1024)
s.close
LSCPHandler.parse_error(ret)
return ret
終わり
通常、これは問題なく機能します。私が話しているサーバーは、通常、非常に迅速に応答を返し、すべてが順調です。
そして、今日、サーバーに問題が発生しました。私の問題ではありませんが、これによりアプリケーション全体がハングし、recv がタイムアウトするのを待ちました。これは正確には最適ではありません。
すぐに何かが聞こえない場合、recv をタイムアウトにする方法はありますか? ルビーのドキュメントを見てみましたが、本当に混乱しています(つまり、TCPSocketは3つのメソッドしか実装しておらず、openまたはrecvのいずれも実装しておらず、Socketの親クラスもこれらのメソッドを実装していません。そして、Socketの親クラスはObjectのようです? 私は完全に混乱しています)