Advertisement
Guest User

Untitled

a guest
Jul 17th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.72 KB | None | 0 0
  1. import socket
  2. from threading import Thread
  3. import json
  4. import traceback
  5. import sys
  6.  
  7.  
  8. def send_message(recipient, message="", sender=""):
  9. print(connections)
  10. try:
  11. data = {
  12. 'message': message,
  13. 'sender': sender
  14. }
  15. if recipient == 'all':
  16. for login, conn in connections.items():
  17. print('сообщение успешно отправлено ', login)
  18. conn.sendall(json.dumps(data).encode('utf-8'))
  19. else:
  20. print('сообщение успешно отправлено ', recipient)
  21. connections[recipient].sendall(json.dumps(data).encode('utf-8'))
  22. except Exception:
  23. print(''.join(traceback.format_exception(*sys.exc_info())[1:]))
  24.  
  25.  
  26. class Player:
  27. def __init__(self, login, password, name):
  28. self.login = login
  29. self.password = password
  30. self.name = name
  31.  
  32.  
  33. class GettingMessages(Thread):
  34. def __init__(self, conn):
  35. Thread.__init__(self)
  36. self.conn = conn
  37.  
  38. def run(self):
  39. try:
  40. while True:
  41. print('Жду сообщения...')
  42. data = self.conn.recv(1024)
  43. if not data:
  44. print('Конец связи')
  45. break
  46. print(data)
  47. data = data.decode('utf-8')
  48. print(data)
  49. data = json.loads(data)
  50. print(data)
  51. if data['type'] == 'reg':
  52. player = Player(data['login'], data['password'], data['name'])
  53. connections[data['login']] = self.conn
  54. Players.append(player)
  55. print(Players)
  56. send_message(message="success", recipient=data['login'])
  57. if data['type'] == 'mes':
  58. send_message(message=data['message'], recipient=data['recipient'], sender=data['login'])
  59. except Exception:
  60. print(''.join(traceback.format_exception(*sys.exc_info())[1:]))
  61.  
  62.  
  63. class FindingConnections(Thread):
  64. def __init__(self, sock):
  65. Thread.__init__(self)
  66. self.sock = sock
  67.  
  68. def run(self):
  69. try:
  70. while True:
  71. print('Ожидаю подключение...')
  72. conn, addr = self.sock.accept()
  73. print(addr)
  74. gm = GettingMessages(conn)
  75. gm.start()
  76. except Exception:
  77. print(''.join(traceback.format_exception(*sys.exc_info())[1:]))
  78.  
  79.  
  80. IP = "0.0.0.0"
  81. PORT = 8093
  82.  
  83. Players = []
  84. connections = {}
  85. sck = socket.socket()
  86. sck.bind((IP, PORT))
  87. sck.listen(1000)
  88. fd = FindingConnections(sck)
  89. fd.start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement