2012-06-03 2 views
1

IRC 봇을 만들려고하지만 240 초 후에 시간이 초과됩니다. 이 문제를 어떻게 해결할 수 있습니까?240 초 후에 파이썬 IRC 봇 타임 아웃

import socket 
host = 'test' 
port = 6667 
channel = '#test' 
nick = "test" 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect((host, port)) 
s.send('NICK ' + str(nick) + ' \n\r') 
s.send('USER v v v :v Script' + '\r\n') 
s.send('JOIN '+channel+' \n\r') 

while True: 
    command = s.recv(4096) 
    print command 
+0

IRC 서버가 아마도 당신에게 화를 낼 것입니다. 서버에서 논스톱으로 읽고 있습니다. – Blender

+1

irclib를 사용해보십시오. IRC (ping 포함)의 모든 프레임 워크를 처리합니다. http://python-irclib.sourceforge.net/ 심지어 IRC Bot 예제를 제공합니다. – Sticky

+1

@Blender : 소켓 작동 방식이 아닙니다. recv 호출은 클라이언트 측만이며, 이미 수신 할 준비가 된 데이터가없는 경우 프로그램을 중지합니다. – jsbueno

답변

0

irclib- 모자를 사용 해보십시오. 서버의 PING 메시지에 답장을 보내지 않았을 가능성이 큽니다.

받은 메시지가 "PING"으로 시작될 때마다 PONG이라는 단어와 프로그램 이름 (및 선택적으로 호스트)을 포함하는 "PONG"메시지로 회신해야합니다. "PONG"다음에 공백을 남겨 둡니다.

확인 PING과 PONG 메시지의 전체 IRC의 specifcations을, 사물이 ou는 onother 살펴는 실험을 따라 누락 될 수 있습니다 : http://www.irchelp.org/irchelp/rfc/rfc.html

5

당신은 서버에서 ping 요청 회신되지 않습니다.

오랜 시간 동안 유휴 상태 일 때 서버는 연결이 끊어 졌다고 생각하고 ping 요청을 보내면 pong (그리고 ping 후에 서버가 보낸 모든 것)으로 응답해야합니다. 그래서 서버가 당신이 보낸 경우, 그 회신해야한다 : 그없이

PING :HELLO_WORLD 
PONG :HELLO_WORLD 

링크를 확인합니다 서버가 죽었하고 연결을 종료합니다.