クライアントTCPソケットをリッスンするコードは次のとおりです。
def initialize
@msg = ''
@messages = Queue.new
@socket = TCPSocket.open('127.0.0.1', 2000)
Thread.new do
loop do
ch = @socket.recv(1)
if ch == "\n"
puts @msg unless @msg.blank?
@msg = ''
else
@msg += ch
end
end
end
end
私が嫌いなのは、バイトごとの文字列連結です。メモリ効率が良くないはずです。
ソケットのread
メソッドは改行まで読み込みます。ソケットは、たとえば、カスタム ターミネータ文字まで読み取ることができます0x00
か?
そうでない場合、どのメモリ効率の高い文字列追加を知っていますか?