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
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
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)
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()
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()
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 test_connection(self): """ Tests the client-server connection. """ chat_client = ChatClient(self.HOST, self.PORT) chat_client.start() time.sleep(1) chat_client.stop()
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)
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)
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
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_())
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
def __init__(self, settings, chat_widget): ChatClient.__init__(self, settings, chat_widget) self.settings = settings self.url = 'chat.sc2tv.ru'
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()
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)
#!/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()
)['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()