سرور :

import asyncore
import socket
import os
import random

clients = {}

class MainServerSocket(asyncore.dispatcher):
def __init__(self, port):
asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.bind(('',port))
self.listen(5)

def handle_accept(self):
newSocket, address = self.accept( )
clients[address] = newSocket
print("Connected from :", address)
SecondaryServerSocket(newSocket)

class SecondaryServerSocket(asyncore.dispatcher_with_sen d):
def handle_read(self):
os.system('color ' + str(random.randint(1, 10)))
message = self.recv(8192)
message = message.decode('utf-8')
print('Message : ', message)
if message:
every = clients.values()
for one in every:
one.send(bytes('Server : ' + message + '\n', 'utf-8'))
else:
self.close()

def handle_close(self):
print(self.getpeername() , ' disconnected')
one = self.getpeername()
del clients[one]

MainServerSocket(21567)
asyncore.loop()


کلاینت :

from socket import *
from threading import Thread
import sys

HOST = 'LocalHost'
PORT = 21567
BUFSIZE = 1024
Address = (HOST, PORT)

TCPClient = socket(AF_INET, SOCK_STREAM)
TCPClient.connect(Address)

def recv():
while True:
message = TCPClient.recv(BUFSIZE)
if not message:
sys.exit(0)
print(message.decode('utf-8'))

Thread(target=recv).start()

while True:
message = input()
if message:
TCPClient.send(bytes(message, 'utf-8'))

TCPClient.close()