├── README.md ├── client.py └── server.py /README.md: -------------------------------------------------------------------------------- 1 | # TCP Chat Simple 2 | 3 | Get connect chat :) 4 | -------------------------------------------------------------------------------- /client.py: -------------------------------------------------------------------------------- 1 | import socket 2 | import threading 3 | 4 | nickname = input("Choose a nickname: ") 5 | 6 | client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 7 | client.connect(('127.0.0.1', 55555)) 8 | 9 | def receive(): 10 | while True: 11 | try: 12 | message = client.recv(1024).decode('ascii') 13 | if message == 'NICK': 14 | client.send(nickname.encode('ascii')) 15 | else: 16 | print(message) 17 | except: 18 | print("An error occureed") 19 | client.close() 20 | break 21 | 22 | def write(): 23 | while True: 24 | message = f"{nickname}: {input('')}" 25 | client.send(message.encode('ascii')) 26 | 27 | receive_thread = threading.Thread(target=receive) 28 | receive_thread.start() 29 | 30 | write_thread = threading.Thread(target=write) 31 | write_thread.start() -------------------------------------------------------------------------------- /server.py: -------------------------------------------------------------------------------- 1 | import threading 2 | import socket 3 | 4 | host = "127.0.0.1" 5 | port = 55555 6 | 7 | server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 8 | server.bind((host, port)) 9 | server.listen() 10 | 11 | clients = [] 12 | nicknames = [] 13 | 14 | def broadcast(message): 15 | for client in clients: 16 | client.send(message) 17 | 18 | def handle(client): 19 | while True: 20 | try: 21 | message = client.recv(1024) 22 | broadcast(message) 23 | except: 24 | index = clients.index(client) 25 | clients.remove(client) 26 | client.close() 27 | nickname = nicknames[index] 28 | broadcast(f'{nickname} left the chat'.encode('ascii')) 29 | nickname.remove(nickname) 30 | break 31 | 32 | def receive(): 33 | while True: 34 | client, address = server.accept() 35 | print("Connected with {str(address)}") 36 | 37 | client.send('NICK'.encode('ascii')) 38 | nickname = client.recv(1024).decode('ascii') 39 | nicknames.append(nickname) 40 | clients.append(client) 41 | 42 | print(f'Nickname of the client is {nickname}!') 43 | broadcast(f'{nickname} joined the chat!'.encode('ascii')) 44 | client.send('Connected to the Server!'.encode('ascii')) 45 | 46 | thread = threading.Thread(target=handle, args=(client, )) 47 | thread.start() 48 | 49 | print("Server is listen") 50 | receive() 51 | 52 | --------------------------------------------------------------------------------