Created
October 21, 2020 00:35
-
-
Save ytnk531/9cf98cd662a2d55c37d88c89278d5cc2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'nio' | |
selector = NIO::Selector.new | |
# 1234番ポートでTCPを待ち受ける | |
server = TCPServer.new('localhost', 1234) | |
# 標準出力を取得する。常にwriteが可能な口がほしいだけ | |
stdout = $stdout | |
# セレクタに登録。 | |
# TCP1234番ポートの読み取りが可能なときを監視 | |
selector.register(server, :r) | |
# 標準出力への書き込みが可能なとき(いつも) | |
selector.register(stdout, :w) | |
loop do | |
# サーバーが読み取り可能になるか、標準出力が書き込み可能になるまでブロック | |
selector.select do |monitor| | |
# monitor.ioで登録したオブジェクト(serverかstdout)を取得する | |
case monitor.io | |
when server | |
socket = monitor.io.accept_nonblock | |
print socket.read_nonblock(1200).strip | |
socket.close | |
when stdout | |
print '.' | |
sleep 0.2 | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment