コード例 #1
0
class ChatCmdHandler(CmdHandler):
    def __init__(self):
        self.chat_client = ChatClient(self)
        self.conn = None
        pass

    def __conn_to_server(self, ip, port):
        init_client(self.chat_client, ip, port)

    def on_conn_made(self, conn):
        self.conn = conn
        self.__conn_to_server('localhost', 8888)
        pass

    def on_conn_lost(self, conn, reason):
        self.conn = None

    def on_msg(self, conn, msg):
        self.chat_client.on_cmd(msg)
        pass

    def on_client_msg(self, client, msg):
        # 从client传过来的数据
        self.conn.sendLine(msg)
        pass
コード例 #2
0
ファイル: goodgame.py プロジェクト: sergey1kabanov/tourist
 def __init__(self, settings, chat_widget):
     ChatClient.__init__(self, settings, chat_widget)
     websocket.WebSocketApp.__init__(self, 'ws://goodgame.ru:8080/chat/websocket',
                           on_message = on_message,
                           on_error = on_error,
                           on_close = on_close)
     self.chat_widget = chat_widget
コード例 #3
0
ファイル: ThreadedChat.py プロジェクト: HardPlant/KeyServer
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
class ConsoleChatClient:
    def __init__(self, port, host):
        self.username: str = ''
        self._client = ChatClient(port, host)

    def start(self):
        self._get_username()
        self._client.start_listen_messages(self._message_received)
        self._client.start_pingpong()
        self._client.on_server_unavailable = self._chat_server_unavailable
        self._get_inputs()

    def _get_username(self):
        while not self.username:
            self.username = input('Enter Username: '******'[{note.name}]: {note.message}\n')

    def _chat_server_unavailable(self):
        print("chat server is unavailable")

    def _get_inputs(self):
        try:
            text = input('> ')
            while text != 'quit':
                if text:
                    self._client.send_message(self.username, text)
                text = input('> ')
        except KeyboardInterrupt:
            pass
        print('Bye')
        # We tell the customer to disconnect from the server.
        # In general, it is not necessary, because our program is already ending at this point
        self._client.close()
コード例 #6
0
ファイル: login_dialog.py プロジェクト: dnc1994/Claptrap
    def login(self):
        host = self.host_input.text()
        port = self.port_input.text()
        if not host or not port:
            QtGui.QMessageBox.warning(self, 'Error', 'Please input host address and port number.')
            return
        try:
            self.client = ChatClient(host, port)
        except:
            QtGui.QMessageBox.warning(self, 'Connection Failed', 'Failed to connect to host.')
            return

        username = unicode(self.username_input.text())
        if not username:
            QtGui.QMessageBox.warning(self, 'Error', 'Please input username.')
            return
        password = self.password_input.text()
        if not username:
            QtGui.QMessageBox.warning(self, 'Error', 'Please input password.')
            return

        login_resp = self.client.login(username, password)
        if not login_resp:
            QtGui.QMessageBox.warning(self, 'Login Failed', 'Wrong username/password. Or the user has already logged in.')
            return

        self.client.username = username
        self.callback_window.client = self.client
        print 'login OK'
        self.accept()
コード例 #7
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()
コード例 #8
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)
コード例 #9
0
 def __init__(self):
     self.chat_client = ChatClient(self)
     self.conn = None
     pass
コード例 #10
0
 def __init__(self, port, host):
     self.username: str = ''
     self._client = ChatClient(port, host)
コード例 #11
0
ファイル: twitch.py プロジェクト: sergey1kabanov/tourist
 def __init__(self, settings, chat_widget):
     ChatClient.__init__(self, settings, chat_widget)
     self.settings = settings
     self.url = 'irc.twitch.tv'
     self.port = 6667
     self.addr = None
コード例 #12
0
ファイル: chat_window.py プロジェクト: dnc1994/Claptrap
            item = QtGui.QStandardItem()
            item.setText(member)
            member_list_model.appendRow(item)
        self.member_list.setModel(member_list_model)

    @QtCore.pyqtSlot()
    def update_messages(self):
        msg_list = self.client.recv_msg()
        if not msg_list:
            print 'No New Message'
            return
        print 'updating messages'
        for msg in msg_list:
            msg_from, msg_time, msg_content = msg.split('\t')
            message = u'{0} ({1}):\n{2}\n'.format(msg_from, msg_time, msg_content)
            self.message_browser.append(message)

    def keyPressEvent(self, QKeyEvent):
        if QKeyEvent.key() == QtCore.Qt.Key_Return:
            self.send_msg()


if __name__ == '__main__':
    client = ChatClient()
    client.login(u'张宝华', '123')
    client.join_room(u'香港记者招待会')
    app = QtGui.QApplication(sys.argv)
    chat_window = ChatWindow(client)
    chat_window.show()
    sys.exit(app.exec_())
コード例 #13
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
コード例 #14
0
ファイル: sc2tv.py プロジェクト: sergey1kabanov/tourist
 def __init__(self, settings, chat_widget):
     ChatClient.__init__(self, settings, chat_widget)
     self.settings = settings
     self.url = 'chat.sc2tv.ru'
コード例 #15
0
ファイル: login_dialog.py プロジェクト: dnc1994/Claptrap
class LoginDialog(QtGui.QDialog):
    def __init__(self, callback_window):
        super(LoginDialog, self).__init__()
        self.callback_window = callback_window
        self.init_ui()

    def init_ui(self):
        self.setWindowTitle('Claptrap Login')
        self.setWindowIcon(QtGui.QIcon('img\\claptrap.ico'))
        self.resize(300, 300)

        self.host_label = QtGui.QLabel('Host', self)
        self.host_input = QtGui.QLineEdit('127.0.0.1', self)
        self.port_label = QtGui.QLabel('Port', self)
        self.port_input = QtGui.QLineEdit('6666', self)
        self.username_label = QtGui.QLabel('Username', self)
        self.username_input = QtGui.QLineEdit('xiaoming', self)
        self.password_label = QtGui.QLabel('Password', self)
        self.password_input = QtGui.QLineEdit('123', self)

        self.login_btn = QtGui.QPushButton('Login', self)
        self.login_btn.clicked.connect(self.login)

        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.host_label)
        layout.addWidget(self.host_input)
        layout.addWidget(self.port_label)
        layout.addWidget(self.port_input)
        layout.addWidget(self.username_label)
        layout.addWidget(self.username_input)
        layout.addWidget(self.password_label)
        layout.addWidget(self.password_input)
        layout.addWidget(self.login_btn)

    # todo: limit chars
    def login(self):
        host = self.host_input.text()
        port = self.port_input.text()
        if not host or not port:
            QtGui.QMessageBox.warning(self, 'Error', 'Please input host address and port number.')
            return
        try:
            self.client = ChatClient(host, port)
        except:
            QtGui.QMessageBox.warning(self, 'Connection Failed', 'Failed to connect to host.')
            return

        username = unicode(self.username_input.text())
        if not username:
            QtGui.QMessageBox.warning(self, 'Error', 'Please input username.')
            return
        password = self.password_input.text()
        if not username:
            QtGui.QMessageBox.warning(self, 'Error', 'Please input password.')
            return

        login_resp = self.client.login(username, password)
        if not login_resp:
            QtGui.QMessageBox.warning(self, 'Login Failed', 'Wrong username/password. Or the user has already logged in.')
            return

        self.client.username = username
        self.callback_window.client = self.client
        print 'login OK'
        self.accept()

    def keyPressEvent(self, QKeyEvent):
        if QKeyEvent.key() == QtCore.Qt.Key_Return:
            self.login()
コード例 #16
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)
コード例 #17
0
ファイル: main.py プロジェクト: uyennguyen87/python
#!/usr/bin/python3
import connect_util
from chat_server import ChatServer
from chat_client import ChatClient
import argparse


if __name__ == '__main__':
    """
        Example (foreach terminal):
        Server: python3 2_3_chat_server_with_select --name server --port 1234
        Client1: python3 2_3_chat_server_with_select --name client1 --port 1234
        Client2: python3 2_3_chat_server_with_select --name client2 --port 1234
    """
    parser = argparse.ArgumentParser(
        description='Socket server Example with Select')
    parser.add_argument('--name', action='store', dest='name', required=True)
    parser.add_argument(
        '--port', action='store', dest='port', type=int, required=True)
    given_args = parser.parse_args()
    port = given_args.port
    name = given_args.name
    if name == connect_util.CHAT_SERVER_NAME:
        server = ChatServer(port)
        server.run()
    else:
        client = ChatClient(name=name, port=port)
        client.run()
コード例 #18
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()