#--------------echo_server.py-----------------------
import socket
from threading import Thread, active_count
DEFAULT_PORT = 5000
def handle_client(c_socket: socket.socket, c_address):
print(f"[+] {c_address} joined...")
while True:
message = c_socket.recv(1024)
if not message: break
print(f"{c_address} sent:", message.decode())
c_socket.sendall(message)
print(f"[-] Connection closed for {c_address}")
c_socket.close()
def main():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('', DEFAULT_PORT))
server_socket.listen()
print("Server started...")
while True:
client_socket, client_address = server_socket.accept()
temp = Thread(target=handle_client, args=(client_socket, client_address))
temp.start()
print("[INFO] Total connections:", active_count())
if __name__ == "__main__":
main()
#------------------------------------------------------------
#--------------client.py-------------------------------------
import socket
DEFAULT_PORT = 5000
HOST = 'localhost'
def main():
my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
my_socket.connect((HOST, DEFAULT_PORT))
print("Connected to server. Type messages and press Enter.")
print("Type 'exit' to quit.")
while True:
message = input("> ")
if not message: continue
if message == 'exit': break
my_socket.sendall(message.encode())
response = my_socket.recv(1024)
print("[Server]", str(response, 'utf_8'))
print("Closing connection...")
my_socket.close()
if __name__ == "__main__":
main()