特定の TCP ポートをリッスンし、受信データをキャプチャして一度に 1 バイトずつ処理するサーバーを作成したいと考えています (受信データの量は最小限で、1 時間あたり数キロバイトです)。
簡単にするために、受信した文字の ASCII コードをコンソールにエコーしたいと思います。動作する文字列ベースの実装はありますが、CR/LF を待たずにサーバーにバイトを即座に処理させる方法がわかりません。
助けていただければ幸いです。 Ruby3.3.1を使用しています
data =socket.recvfrom(1000) を使用しようとしましたが、私の知る限り、これはまだ CR/LF を待機しています
ソケット.getbyteを使用してみてください。これは、次に受信したバイトの ASCII コードを返します。その後、Integer#chr を使用してバイトを出力できます。
socket.getbyte # => 104
socket.getbyte.chr # => "h"
これをループに入れて、受信データをコンソールに出力できます。
loop do
puts socket.getbyte.chr
end