def authentication_and_create_handler(self, conn, next_id=None): # принимает один байт для подтверждения # отправляет следующий номер либо из генератора id_clients, либо из id_PP bytes_message = conn.recv(cnf.SIZE_HEADER) if not bytes_message: print("disconnect") return False try: message = cnf.to_data_message_from_bytes_2(bytes_message) except: return False if message.cmd: print("пришло что-то странное.... ") print(message) return False elif message.cmd == CMD.NEW_CLIENT: # заглушка, замена аутотификации на сервере. Не забыть изменить!!! print("Client!") next_id = self.id_clients.next() self.create_client_handler(conn, next_id) elif message.cmd == CMD.NEW_PP: print('PP') next_id = self.id_PP.next() self.create_PP_handler(conn, next_id) answer = cnf.ntuple_data_message(0, CMD.GET_SELF_ID, self.self_ID, message.sender, 0, next_id) bytes_answer = cnf.to_bytes_from_data_message_2(answer) conn.send(bytes_answer) # TODO !!! ВНИМАНИЕ!!! return True
def main(): TCP_IP = cnf.server_address TCP_PORT = cnf.PORT sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((cnf.localhost, TCP_PORT)) id = 1111 cmd = 2222 sender = 3333 receiver = 4444 data = 6666 size_next = 5555 msg = cnf.ntuple_data_message(id, cmd, sender, receiver, size_next, data) mess = cnf.to_bytes_from_data_message_2(msg) if not sock.send(mess): return answer = sock.recv(cnf.SIZE_HEADER) if not answer: print ("нет ответа") return message = cnf.to_data_message_from_bytes_2(answer) self_id = message.data while 1: receiver = input("Продолжить, получатель?\n") id_ = msg.id + 1 msg = cnf.ntuple_data_message(id_, CMD.ON_LIGHT, self_id, receiver, msg.size_next, msg.data) mess = cnf.to_bytes_from_data_message(msg) sock.send(mess) tmp = sock.recv(cnf.SIZE_HEADER) or None if not tmp: sock.close() return answer = sock.recv(24) if not answer: sock.close() return answer_ = cnf.to_data_message_from_bytes_(answer) print ("received ->" + str(answer_))