0
여러 대의 서버에 연결하는 IRC 봇을 만들려고하고 있으며 모든 소켓을 한꺼번에 읽는 데 문제가 있습니다.Ruby - 여러 소켓에서 읽기 (irc bot)
내 현재 코드 :
#!/usr/bin/ruby require 'socket' servers = ["irc.chat4all.org"] def connect(server, port, count) puts "connecting to #{server}..." @socket[count] = TCPSocket.open(server, port) say("NICK link_hub", count) say("USER link_hub 0 * link_hub", count) read_data(count) end def say(msg, count) @socket[count.to_i].puts msg.to_s end def say_channel(msg, count) @socket[count.to_i].puts("PRIVMSG #test :"+msg.to_s) end def read_data(count) until @socket[count].eof? do msg = @socket[count].gets puts msg if msg.match(/^PING :(.*)$/) say("PONG #{$~[1]}", count) say("JOIN #test", count) next end if msg.match(/`test/) say_channel("connecting to efnet...", count) Thread.new { connect("irc.efnet.nl", 6667, count) } end end end conn = [] count = 0 @socket = [] servers.each do |server| connect(server, 6667, count) count += 1 end
문제는 내가 명령 ''테스트 '를 보낼 때, 그것은 efnet에 연결하지만 늘 메신저의 새로운 연결을 실행하더라도 더 이상 다른 소켓을 읽을 수 있다는 것입니다 실. 두 소켓에서 동시에 읽으려고합니다. (변수 'count'는 소켓 번호입니다.)
아무도 도와 줄 수 있습니까? 매우 감사!