2013-04-20 246 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

相關問題