質問

そこで、以下のコード:

  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があまりないと思います'聞などに関す。またはrubyの文書がいきがちですが、もっと混乱さん(TCPSocketのみ実施の方法によって明らかにした開recv、その親クラスのソケットなimplementeこれらの方法。ソケットの親クラスが表示されるオブジェクト?私は徹底混乱)

役に立ちましたか?

解決

あなたは、デフォルト以外の何かにソケットのタイムアウトソケットオプションを受け取る設定することができます。トリッキーなビットは、つまり、あなたがあまりにも早くタイムアウトにごrecvコールをしたくない、まだすべてのユースケースで動作すること、適切な数を選択することです。

s.setsockopt(Socket::SOL_SOCKET, Socket::SO_RCVTIMEO, <timeout>)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top