rendered paste bodyimport socketimport selectimport bncs__date__ = 'December.03.2006'__author__ = 'topaz'class pybbot: def __init__(self): pass def connect(self, server, port=6112): self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.socket.connect((server, port)) self.socket.send(chr(1)) self.packet_builder = bncs.builder(self.socket) self.packet_builder.send_0x50() def recv_loop(self): packet_handler = bncs.handler(self.socket) buffer_data = '' buffer_length = 0 while True: readable, writable, error = select.select([self.socket], [], [], 15) if readable <> []: temp_data = self.socket.recv(1024) recvd_len = len(temp_data) buffer_data += temp_data buffer_length += recvd_len while buffer_length >= 4: packet_length = self.packet_builder.send_buffer.unpack_byte(buffer_data[2:3]) if (buffer_length < packet_length): break else: print buffer_data[:packet_length] packet_handler.parse_packet(buffer_data[:packet_length]) buffer_data = buffer_data[packet_length:] buffer_length -= packet_lengthif __name__ == '__main__': bot = pybbot() bot.connect('useast.battle.net') bot.recv_loop()