8

我正在用 Python 编写一个 IRC 机器人。

来源:http://pastebin.com/gBrzMFmA(对不起,pastebin,我不知道如何有效/正确地使用这里的代码标签)

当“irc”套接字死亡时,我是否可以检测它是否死亡然后自动重新连接?

我现在在谷歌上搜索了一段时间,发现我必须创建一个新的套接字。我正在尝试并添加一些东西,比如在 while True: 中捕获 socket.error:但它似乎只是挂起并且没有正确重新连接..

提前感谢您的帮助

4

2 回答 2

9

在这里回答:Python:检查 IRC 连接是否丢失(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()
于 2013-06-26T06:19:07.603 回答
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()
于 2018-11-28T06:08:25.260 回答