2011-08-17 9 views
3

私はソケットを使ってウェブサイトのチャットとの間で情報をやり取りするこのボットをPythonで作ろうとしています。これは、キーを取得し、最初の接続からのキーを使用してログインを必要とする、あなたはチャット(異なるソケット/ ip)に接続することができますPythonの複数のソケット/再利用/クローズソケット? _socketobjectエラー

私はsocket.close()とそれ以外のものでこれをやってみました私はないんだけどそれは、この属性のエラーを与える

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")のグローバル変数を作成します。これはモジュールの代わりになります。モジュールが消えて、今はソケットオブジェクトになっています。次に、socket_makeをもう一度呼び出すと、グローバルsocketはモジュールでなくソケットインスタンスになります。

別の名前を使用するか、クライアント全体を別のクラスにカプセル化することをお勧めします。

関連する問題