Project

General

Profile

Actions

Bug #15253

closed

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

Added by aants (Makoto HOSHINO) over 5 years ago. Updated over 4 years ago.

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

Updated by nobu (Nobuyoshi Nakada) over 5 years ago

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

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

Actions #2

Updated by jeremyevans0 (Jeremy Evans) over 4 years ago

  • Status changed from Feedback to Closed
Actions

Also available in: Atom PDF

Like0
Like0Like0