Example #1
0
    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
Example #2
0
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_))