예제 #1
0
def test_three_chat_clients():
    print()
    expected = [
        ChatMessage('client1', 'message 1'),
        ChatMessage('client2', 'message 2'),
        ChatMessage('client3', 'message 3'),
        ChatMessage('client3', 'message 4'),
        ChatMessage('client2', 'message 5'),
        ChatMessage('client1', 'message 6'),
    ]

    chat_host = ChatRoom()
    chat_client1 = ChatClient('client1', chat_host)
    chat_client2 = ChatClient('client2', chat_host)
    chat_client3 = ChatClient('client3', chat_host)

    chat_client1.new_message('message 1')
    chat_client2.new_message('message 2')
    chat_client3.new_message('message 3')
    chat_client3.new_message('message 4')
    chat_client2.new_message('message 5')
    chat_client1.new_message('message 6')

    actual = chat_host.messages

    assert expected == actual
예제 #2
0
 def test_connection(self):
     """
     Tests the client-server connection.
     """
     chat_client = ChatClient(self.HOST, self.PORT)
     chat_client.start()
     time.sleep(1)
     chat_client.stop()
예제 #3
0
def chat_client_thread(port, pub):
    print("[Client] Public: ", pub)
    exchange_client = ExchangeClient(port, pub)
    sym_key = chat_client_gen_sym_key()
    print("[Client] sym_key: ", sym_key)
    exchange_client.send_message(sym_key)

    chat_client = ChatClient(port, sym_key)
    while True:
        print('Send> ', end='')
        msg = input()
        chat_client.send_message(msg)
예제 #4
0
def connect(host, port):
    chat_client = ChatClient(ip=host, port=port)
    loop = asyncio.get_event_loop()

    loop.run_until_complete(chat_client._connect())

    # display menu, wait for command from user, invoke method on client
    asyncio.ensure_future(handle_user_input(chat_client=chat_client,
                                            loop=loop))
    asyncio.ensure_future(display_msgs(chat_client=chat_client))

    loop.run_forever()
예제 #5
0
    def start(self):
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
            s.bind((self.address, self.port))
            s.listen(5)

            stop = False
            while not stop:
                print('Waiting connections...')
                conn, addr = s.accept()
                print(f'Connected by: {addr}.')
                client = ChatClient(conn, addr)
                client.start()
                client.attach(self)

                self.clients.append(client)
예제 #6
0
import socket
from chat_client import ChatClient

HOST = ''
PORT = 4006

clients = []

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    s.listen(5)

    stop = False
    while not stop:
        print('Waiting connections...')
        conn, addr = s.accept()
        print(f'Connected by: {addr}.')
        client = ChatClient(conn, addr, clients)
        client.start()
        clients.append(client)
예제 #7
0
 def __init__(self):
     self.chat_client = ChatClient(self)
     self.conn = None
     pass
 def __init__(self, port, host):
     self.username: str = ''
     self._client = ChatClient(port, host)
예제 #9
0
                )['mensagem'] == 'Você foi desconectado da sala de chat':
            client.client_socket.close()
            break


def send_mensage(client):
    while True:
        mensagem = input('')
        client.send_mensage(mensagem)
        if mensagem == '/SAIR':
            break


user_input = input('Digite /ENTRAR para ENTRAR: ')
if user_input == '/ENTRAR':
    nickname = input('Digite o seu nickname: ')
    server_ip = input('Digite o ip do servidor: ')
    server_port = int(input('Digite a porta associada: '))
    # Porta: 65432
    #local_host: '127.0.0.1'
    client = ChatClient(nickname, server_ip, server_port)

    print("Conectado com o servidor, pode digitar as mensagens")

    t_1 = threading.Thread(target=send_mensage, args=(client, ))
    t_2 = threading.Thread(target=listen_mensage, args=(client, ))

    t_1.start()

    t_2.start()