Issue #15253 has been reported by aants (Makoto HOSHINO).

----------------------------------------
Bug #15253: Arduinoとの接続においてSocket.tcp_server_loop中で$stderr.puts、pなどが使用できない
https://bugs.ruby-lang.org/issues/15253

* Author: aants (Makoto HOSHINO)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
サーバーにおいて以下のコードを動かしています。

`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から送ったデータが
問題なく表示されます。



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>