2013-04-20 183 views
1

我在这里阅读了关于此主题的一些问题,但我无法得到一个简单的答案。 我会提供一些代码,使它更容易。Python:套接字连接仍然打开

import socket 

irc = socket.socket (socket.AF_INET, socket.SOCK_STREAM) 

irc.connect((network, port)) 

# Do the rest of the connection (set nick, user, join chan) 
# Okay, now we're connected 

while True: 

    doAllTheBotStuff() 

我有一个!quit命令,打破了while True:循环。但有时我因为其他原因而被拒绝,例如ping超时或我的网络崩溃。我想要做的是:

while True: 

    doAllTheBotStuff() 

    if not stillConnected(): 
     break 

我该怎么做stillConnected()函数?


读/写:

我做了一个类我的机器人,但希望你能理解它没有所有这些信息

# READING 

ready = select.select([self.irc], [], [], 1) 
if ready[0]: 
    temp = self.irc.recv(4096) 
    # Here I handle the reading. Parse commands and all that stuff. 

写作始终是一个什么样的反应被阅读。我用这个功能:

def send_irc_cmd(self, cmd, args): 
    self.irc.send(cmd+" :"+args+"\r\n") 
+0

从套接字读取时,或者如果引发'socket.error',通常会通过EOF检测到断开连接。你需要包含进行套接字读写的代码。 – Aya 2013-04-20 17:20:30

+0

我会在问题中包含一块它 – pasadinhas 2013-04-20 17:28:54

+0

更新,如果你需要任何细节问我:) – pasadinhas 2013-04-20 17:34:59

回答

1

认为所有你需要做的是行后添加的东西...

temp = self.irc.recv(4096) 

...来检查,如果temp是空字符串,这表明远程主机已经关闭了连接,并用它来打破你的循环。

因为您的代码示例不完整和/或实际代码的简化,所以我无法更准确或更具体。

+0

它看起来像它的作品:) – pasadinhas 2013-04-20 19:29:48

相关问题