fork download
  1. import socket
  2. import threading
  3. import sys
  4. import pickle
  5.  
  6. class Server():
  7. def __init__(self):
  8.  
  9. self.clientes = []
  10.  
  11. self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  12. self.sock.bind(('192.168.1.40', 9090))
  13. self.sock.listen(10)
  14. self.sock.setblocking(False)
  15.  
  16. accept = threading.Thread(target=self.acceptf)
  17. process = threading.Thread(target=self.processf)
  18.  
  19.  
  20. accept.daemon = True
  21. accept.start()
  22.  
  23. process.daemon = True
  24. process.start()
  25.  
  26.  
  27. while True:
  28. msg = input('>')
  29. if msg == 'qq':
  30. self.sock.close()
  31. sys.exit()
  32. else:
  33. pass
  34.  
  35.  
  36. def msg_to_all(self, msg, client):
  37. for c in self.clientes:
  38. try:
  39. if c != client:
  40. c.send(msg)
  41. except:
  42. self.clientes.remove(c)
  43.  
  44. def acceptf(self):
  45. print('---server---')
  46. while True:
  47. try:
  48. conn, addr = self.sock.accept()
  49. conn.setblocking(False)
  50. print('connected by', socket.gethostname() + ' ' + socket.gethostbyname(socket.gethostname()))
  51. self.clientes.append(conn)
  52. except:
  53. pass
  54.  
  55. def processf(self):
  56. while True:
  57. if len(self.clientes) > 0:
  58. for c in self.clientes:
  59. try:
  60. data = c.recv(1024)
  61. if data:
  62. self.msg_to_all(data,c)
  63. except:
  64. pass
  65.  
  66.  
  67. s = Server()
  68.  
Runtime error #stdin #stdout #stderr 0.06s 254720KB
stdin
Standard input is empty
stdout
---server---
>
stderr
Traceback (most recent call last):
  File "prog.py", line 67, in <module>
    s = Server()
  File "prog.py", line 28, in __init__
    msg = input('>')
EOFError