Project

General

Profile

Bug #15253

Arduinoとの接続においてSocket.tcp_server_loop中で$stderr.puts、pなどが使用できない

Added by aants (Makoto HOSHINO) 11 months ago. Updated 11 months ago.

Status:
Feedback
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
[ruby-core:89558]

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

History

Updated by nobu (Nobuyoshi Nakada) 11 months ago

  • Status changed from Open to Feedback
  • Description updated (diff)

pを何も表示されないということは通常ないのですが、sockclient_addrinfoはどうなっているでしょうか。
また、「問題なく表示」されるコードはどのようなものでしょうか。

Also available in: Atom PDF