2011-08-17 59 views
3

所以我一直在試圖讓這個機器人在Python中使用套接字來獲取一些信息,並從一個網站上的聊天。這需要一個登錄,它獲取密鑰,然後使用第一個連接的密鑰,您可以連接到聊天(不同的套接字/ IP)Python中的多個套接字/重用/關閉套接字? _socketobject錯誤

我試着用socket.close()這樣做和whatnot,但可惜我不斷收到錯誤:(

這是我目前使用的:?

def send_packet(socket, packet): 
    socket.send(packet+chr(0)) 

def socket_make(host, port): 
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    s.connect((host, port)) 
    return s 

socket = socket_make(get_ip('8'), get_port('8')) 
send_packet(socket, '<y r="8" />') 
socket.recv(1024) 
send_packet(socket, '<v n="'+username+'" p="'+password+'" />') 
tmp = socket.recv(1024) 
socket.close() 

socket = socket_make("174.36.242.40",10032) 
send_packet(socket, '<y r="'+infos['c']+'" />') 
token = socket.recv(1024) 
token = token[token.find('i="')+3:token.find('" c="')] 

它給這個屬性錯誤,大概是因爲.socket並不意味着什麼,但它一般不會,我不相當確定

AttributeError: '_socketobject' object has no attribute 'socket' 

回答

1

您之前已導入了套接字模塊。然後你創建一個具有相同名稱的全局變量(「套接字」),現在取代模塊。該模塊消失了,現在是一個套接字對象。然後,當您嘗試再次調用socket_make時,全局socket不再是模塊,而是套接字實例。

使用不同的名稱,或者更好,但將整個客戶端封裝到另一個類中。