import socket
import threading
import sys
import pickle

class Server():
	def __init__(self):

		self.clientes = []

		self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
		self.sock.bind(('192.168.1.40', 9090))
		self.sock.listen(10)
		self.sock.setblocking(False)

		accept = threading.Thread(target=self.acceptf)
		process = threading.Thread(target=self.processf)


		accept.daemon = True
		accept.start()

		process.daemon = True
		process.start()


		while True:
			msg = input('>')
			if msg == 'qq':
				self.sock.close()
				sys.exit()
			else:
				pass


	def msg_to_all(self, msg, client):
		for c in self.clientes:
			try:
				if c != client:
					c.send(msg)
			except:
				self.clientes.remove(c)

	def acceptf(self):
		print('---server---')
		while True:
			try:
				conn, addr = self.sock.accept()
				conn.setblocking(False)
				print('connected by', socket.gethostname() + ' ' + socket.gethostbyname(socket.gethostname()))
				self.clientes.append(conn)
			except:
				pass

	def processf(self):
		while True:
			if len(self.clientes) > 0:
				for c in self.clientes:
					try:
						data = c.recv(1024)
						if data:
							self.msg_to_all(data,c)
					except:
						pass


s = Server()
