Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import socket
- from threading import Thread
- import json
- import traceback
- import sys
- def send_message(recipient, message="", sender=""):
- print(connections)
- try:
- data = {
- 'message': message,
- 'sender': sender
- }
- if recipient == 'all':
- for login, conn in connections.items():
- print('сообщение успешно отправлено ', login)
- conn.sendall(json.dumps(data).encode('utf-8'))
- else:
- print('сообщение успешно отправлено ', recipient)
- connections[recipient].sendall(json.dumps(data).encode('utf-8'))
- except Exception:
- print(''.join(traceback.format_exception(*sys.exc_info())[1:]))
- class Player:
- def __init__(self, login, password, name):
- self.login = login
- self.password = password
- self.name = name
- class GettingMessages(Thread):
- def __init__(self, conn):
- Thread.__init__(self)
- self.conn = conn
- def run(self):
- try:
- while True:
- print('Жду сообщения...')
- data = self.conn.recv(1024)
- if not data:
- print('Конец связи')
- break
- print(data)
- data = data.decode('utf-8')
- print(data)
- data = json.loads(data)
- print(data)
- if data['type'] == 'reg':
- player = Player(data['login'], data['password'], data['name'])
- connections[data['login']] = self.conn
- Players.append(player)
- print(Players)
- send_message(message="success", recipient=data['login'])
- if data['type'] == 'mes':
- send_message(message=data['message'], recipient=data['recipient'], sender=data['login'])
- except Exception:
- print(''.join(traceback.format_exception(*sys.exc_info())[1:]))
- class FindingConnections(Thread):
- def __init__(self, sock):
- Thread.__init__(self)
- self.sock = sock
- def run(self):
- try:
- while True:
- print('Ожидаю подключение...')
- conn, addr = self.sock.accept()
- print(addr)
- gm = GettingMessages(conn)
- gm.start()
- except Exception:
- print(''.join(traceback.format_exception(*sys.exc_info())[1:]))
- IP = "0.0.0.0"
- PORT = 8093
- Players = []
- connections = {}
- sck = socket.socket()
- sck.bind((IP, PORT))
- sck.listen(1000)
- fd = FindingConnections(sck)
- fd.start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement