我正在用Python编写一个IRC bot。
来源:http://pastebin.com/gBrzMFmA(抱歉为pastebin,我不知道如何在这里有效/正确地使用代码标签)
当“irc”插座死机时,无论如何我可以检测它是否已经死了然后自动重新连接?
我现在谷歌搜索了一段时间,发现我必须创建一个新的套接字。我正在尝试添加类似捕捉socket.error的东西,但是它似乎只是挂起而没有正确重新连接..
提前感谢您的帮助
答案 0 :(得分:6)
在这里回答:Python : Check if IRC connection is lost (PING PONG?)
虽然问题所有者的接受答案有效,但我更喜欢John Ledbetter的答案,因为它很简单:https://stackoverflow.com/a/6853352/625919
所以,对我来说,我有一些基本的东西
def connect():
global irc
irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
irc.connect((server, port))
#and nick, pass, and join stuffs
connect()
while True:
data = irc.recv(4096)
if len(data) == 0:
print "Disconnected!"
connect()
答案 1 :(得分:0)
这是重新连接插座的代码
import socket
import time
username = "Manivannan"
host = socket.gethostname()
port = 12345 # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connected = False
print("Server not connected")
while True:
if(not connected):
try:
s.connect((host, port))
print("Server connected")
connected = True
except:
pass
else:
try:
s.sendall(username.encode('utf-8'))
except:
print("Server not connected")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connected = False
pass
time.sleep(5)
s.close()