Actions
Bug #15253
closedArduinoとの接続においてSocket.tcp_server_loop中で$stderr.puts、pなどが使用できない
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
Description
サーバーにおいて以下のコードを動かしています。
require 'socket'
Socket.tcp_server_loop("", 49088) {|sock, client_addrinfo|
Thread.new {
begin
number_of_copied_bytes = IO.copy_stream(sock, sock)
$stderr.puts number_of_copied_bytes
p number_of_copied_bytes
ensure
sock.close
end
}
}
これに、ESP32マイコンを搭載したArduino 1.8.5からデータを送っても、コンソールに送ったバイト数が
表示されません。つまり、number_of_copied_bytes
の値が$stderr.puts
でもp
でも表示されません。
ArduinoではなくPC上でRubyを動かしてデータを送ると送ったバイト数が表示されますし、
Socket.tcp_server
ではなく、TCPServer
クラスを使用したコードでは、Arduinoから送ったデータが
問題なく表示されます。
Updated by nobu (Nobuyoshi Nakada) over 5 years ago
- Description updated (diff)
- Status changed from Open to Feedback
p
を何も表示されないということは通常ないのですが、sock
やclient_addrinfo
はどうなっているでしょうか。
また、「問題なく表示」されるコードはどのようなものでしょうか。
Updated by jeremyevans0 (Jeremy Evans) over 4 years ago
- Status changed from Feedback to Closed
Actions
Like0
Like0Like0