def send(sock):
    while True:
        msg = input('Введите сообщение ("exit" для выхода): ')

        if msg:
            print(msg)
            jim.MESSAGE['message'] = msg

            try:
                chat.send_data(sock, jim.MESSAGE)
            except ConnectionResetError as e:
                logger.error(e)
                break
示例#2
0
    def setUp(self):
        self.s = chat.get_server_socket('localhost', 7777)
        self.c = chat.get_client_socket('localhost', 7777)
        self.sender = self.s.accept()[0]

        chat.send_data(self.c, {'test': 'test'})
示例#3
0
 def test_send_data(self):
     with self.assertRaises(TypeError):
         chat.send_data()
    logger.debug('App started')

    parser = chat.create_parser()
    namespace = parser.parse_args()

    client_name = input('Введите имя: ')

    sock = chat.get_client_socket(namespace.addr, namespace.port)
    serv_addr = sock.getpeername()
    start_info = f'Connected to server: {serv_addr[0]}:{serv_addr[1]}'
    print(start_info)
    logger.info(start_info)

    jim.PRESENCE['user']['account_name'] = client_name
    try:
        chat.send_data(sock, jim.PRESENCE)
    except ConnectionResetError as e:
        logger.error(e)
        sock.close()
        exit(1)

    p_send = multiprocessing.Process(target=send, args=(sock, ))
    p_receive = multiprocessing.Process(target=receive, args=(sock, ))

    p_send.start()
    p_receive.start()

    if not p_send.is_alive() or not p_receive.is_alive():
        exit(1)

    p_send.join()
示例#5
0
    print(f'Server started at {serv_addr[0]}:{serv_addr[1]}')

    client, address = sock.accept()
    print(f'Client connected from {address[0]}:{address[1]}')

    while True:
        data = chat.get_data(client)

        if client_name == '':
            if data['action'] == 'presence' and data['user']['account_name'] != '':
                client_name = data['user']['account_name']
                jim.RESPONSE['response'], jim.RESPONSE['alert'] = jim.SERV_RESP[0]
                print(f'{data["time"]} - {data["user"]["account_name"]}: {data["user"]["status"]}')
            else:
                jim.RESPONSE['response'], jim.RESPONSE['alert'] = jim.SERV_RESP[1]

        if client_name != '' and data['action'] == 'msg':
            print(f'{data["time"]} - {client_name}: {data["message"]}')
            jim.RESPONSE['response'], jim.RESPONSE['alert'] = jim.SERV_RESP[0]

            if data["message"] == 'exit':
                jim.RESPONSE['response'], jim.RESPONSE['alert'] = jim.SERV_RESP[2]

        chat.send_data(client, jim.RESPONSE)

        if jim.RESPONSE['response'] != '200':
            client.close()
            break

    sock.close()
                        jim.RESPONSE['response'], jim.RESPONSE[
                            'alert'] = jim.SERV_RESP[2]

                clients_info[s_client]['data_out'] = jim.RESPONSE

            for s_client in clients:
                clients_info[s_client]['in_messages'].extend(messages)

            for s_client in w:
                if 'data_out' in clients_info[s_client]:
                    data_out = clients_info[s_client]['data_out']
                    data_out['messages'] = clients_info[s_client][
                        'in_messages']

                    try:
                        chat.send_data(s_client, data_out)
                        clients_info[s_client].pop('data_out')
                        clients_info[s_client]['in_messages'].clear()
                    except ConnectionResetError as e:
                        logger.error(e)
                        clients.remove(s_client)
                        clients_info.pop(s_client)

                    if data_out['response'] != '200':
                        clients.remove(s_client)
                        clients_info.pop(s_client)

        if len(clients) == 0:
            waiting_counter += 1

        if waiting_counter > 1200: