def newConnection(self, sock):
		#accept connection
		connsocket, address = sock.accept()
		
		#let the client identify itself
		user = self.receiveDataSet(connsocket)
		user = player_pb2.Player()
		
		#if username is already taken
		if user.name in [usr.name for usr in self.peers.values()]:
			#connection denied
			self.sendDataSet(connsocket, [tcp_packet_pb2.TcpPacket.ChatPacket().message])
			
			#close connection
			connsocket.shutdown(socket.SHUT_RDWR)
			connsocket.close()
			return
		
		#connection confirmed
		self.sendDataSet(connsocket, [tcp_packet_pb2.TcpPacket.ChatPacket().message])

		#store connected client in connections
		self.connections.append(connsocket)
		
		#dictionary with some info on the users
		self.peers[connsocket] = user
		
		#notify peers
		print(address[0] + " connected")
		tcp_packet_pb2.TcpPacket.ChatPacket().message = "server > " + user.name + " (" + address[0] + ") joined the chat"
		log_msg = tcp_packet_pb2.TcpPacket.ChatPacket().message 
		self.transmit(user.channel, log_msg)
Beispiel #2
0
def getName():
    # Get player name
    global player, playerList, packetListener, udpSock, gameListener, addrList
    player = play.Player(name=hname.get())
    hostPage.withdraw()
    # Connect to lobby & get player id
    player = connectToLobby(sock, player, lobbyId)
    # Get player list
    playerList = getPlayerList(sock)
    addrList = []
    nextPort = 1235
    # Listen for messages
    packetListener = threading.Thread(target=receivePackets,
                                      args=(sock, player),
                                      daemon=True)
    packetListener.start()
    # UDP Connection
    udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    udpSock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
    udpSock.settimeout(0.1)
    gameListener = threading.Thread(target=gameStart,
                                    args=(udpSock, player, canvas),
                                    daemon=True)
    gameListener.start()
    root.deiconify()
    def __init__(self, usr):
        SERVER = "192.168.202.128"  #"202.92.144.45"
        PORT = 80

        #protocol buffer user
        self.user = player_pb2.Player()
        self.user.name = usr

        self.host = SERVER
        self.port = PORT

        #inet streaming socket
        self.csocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.csocket.connect((self.host, self.port))

        #let server know who we are
        self.sendDataSet([self.user])

        #server aknowledge connection?
        response = self.receiveDataSet(self.csocket)
        response = protobuf.getMsg(response)

        if response == "n":
            print("connection refused by server")
            exit()

        #thread to handle incoming data
        threading.Thread(target=self.listen).start()

        #thread to send data
        threading.Thread(target=self.send).start()
def getPlayer():
    global player, lobby_id, msg, playerList, packetListener, data, max_p
    player = play.Player(name=playername.get())
    lobby_id = CreateLobbyPacket(sock)
    labelID['text'] = "LOBBY ID:" + lobby_id
    mainPage.withdraw()
    player = ConnectPacket(sock, player, lobby_id)
    playerList = PlayerListPacket()
    packetListener = threading.Thread(target=RecvPacket,
                                      args=(sock, player),
                                      daemon=True)
    packetListener.start()
Beispiel #5
0
def getPlayer():
    global player, lobby_id, msg, playerList, packetListener, data
    player = play.Player(name=playername.get())

    lobby_id = lobid.get()
    labelID['text'] = "LOBBY ID:" + lobby_id
    mainPage.withdraw(
    )  #Removes the window from the screen, without destroying it.
    player = ConnectPacket(sock, player, lobby_id)
    playerList = PlayerListPacket()
    packetListener = threading.Thread(target=RecvPacket,
                                      args=(sock, player),
                                      daemon=True)
    packetListener.start()
Beispiel #6
0
 def serialize(self, data):
     player = player_pb2.Player()
     player.name = data["name"]
     player.licence = data["licence"]
     player.woman = data["gender"] == 'W'
     single = player.results.add()
     single.sport = 'single'
     single.points = data["single"]["point"]
     single.position = data["single"]["rank"]
     double = player.results.add()
     double.sport = 'double'
     double.points = data["double"]["point"]
     double.position = data["double"]["rank"]
     mx = player.results.add()
     mx.sport = 'mx'
     mx.points = data["mx"]["point"]
     mx.position = data["mx"]["rank"]
     return b64encode(player.SerializeToString())
Beispiel #7
0
def getName():
  # Get player name
  global player, playerList, packetListener, udpSock, gameListener, lobbyId, portPacket
  player = play.Player(
    name = hname.get()
  )
  lobbyId = the_id.get()
  labelID['text'] = "LOBBY ID: " + lobbyId
  hostPage.withdraw()
  # Connect to lobby & get player id
  player = connectToLobby(sock, player, lobbyId)
  # Get player list
  playerList = getPlayerList(sock)
  # Listen for messages
  packetListener = threading.Thread(target=receivePackets, args=(sock, player), daemon=True)
  packetListener.start()
  # UDP Connection
  udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
  portPacket = udp.UdpPacket.PortPacket(type=udp.UdpPacket.PORT)
  udpSock.sendto(portPacket.SerializeToString(), ('206.189.47.94', 13000))

  gameListener = threading.Thread(target=gameStart, args=(udpSock, player, canvas), daemon=True)
  gameListener.start()
  root.deiconify()
Beispiel #8
0
HOST = '202.92.144.45'
PORT = 80


def Menu():
	print("[1] - Create Lobby")
	print("[2] - Connect")
	print("[3] - Disconnect")
	x = input("choice: ")
	return x

choice = Menu()
if choice == "1":

	host = player_pb2.Player() # create object of player
	host.name = "ganoya"
	host.id = "1"

	createLobby = tcp_packet_pb2.TcpPacket.CreateLobbyPacket() # create object create lobby
	createLobby.type = tcp_packet_pb2.TcpPacket.CREATE_LOBBY
	createLobby.max_players = 4
	with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
		s.connect((HOST,PORT))
		s.sendall(createLobby.SerializeToString())
		data = s.recv(1024)
	createLobby.ParseFromString(data)
	print(createLobby)
elif choice == "2":

	client = player_pb2.Player() # create object of player
Beispiel #9
0
    "woman": False,
    "single": {
        "pts": 882.0,
        "pos": 387
    },
    "double": {
        "pts": 1000.0,
        "pos": 369
    },
    "mx": {
        "pts": 667.0,
        "pos": 464
    }
}

player = player_pb2.Player()
player.name = data["name"]
player.licence = data["licence"]
player.woman = data["woman"]
single = player.results.add()
single.sport = 'single'
single.points = data["single"]["pts"]
single.position = data["single"]["pos"]
double = player.results.add()
double.sport = 'double'
double.points = data["single"]["pts"]
double.position = data["single"]["pos"]
mx = player.results.add()
mx.sport = 'mx'
mx.points = data["single"]["pts"]
mx.position = data["single"]["pos"]
Beispiel #10
0
def main():

    lobby_id = "AB2L"  # custom lobby

    # Socket to be used
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((SERVER, PORT))

    player_list_packet = tcp_packet.PlayerListPacket()
    player_list_packet.type = tcp_packet.PLAYER_LIST

    send_to_server(sock, player_list_packet)

    player_list = player_list_packet.player_list
    no_of_players = len(player_list)

    # ----------If custom lobby won't be used --------
    # if no_of_players == 0:
    #     # Send a lobby packet
    #     lobby_packet = tcp_packet.CreateLobbyPacket()
    #     lobby_packet.type = tcp_packet.CREATE_LOBBY
    #     lobby_packet.max_players = 3

    #     lobby_id = send_to_server(sock, lobby_packet) # returns lobby id
    #     lobby_id = str(lobby_id)

    #     print("Lobby id: " + lobby_id)
    #     print("Server can hold up to " + str(lobby_packet.max_players) + " players.")

    # if lobby_id == -1:
    #     print("No lobby has been created.")
    # return

    # Create a client ('host' is just the first player to connect)
    name = raw_input("Enter name: ")
    client = player_pb2.Player()
    client.name = name

    # Connect now the client to server
    connect_to_server(client, lobby_id)

    # Create chat packet
    chat_packet = tcp_packet.ChatPacket()
    chat_packet.type = tcp_packet.CHAT
    chat_packet.player.name = client.name

    while True:
        received = sock.recv(1024)
        print(received)

        message = raw_input(name + ": ")
        chat_packet.message = message

        send_to_server(sock, chat_packet)

        if (message == "bye"):
            print(player_list)
            disconnect_packet = tcp_packet.DisconnectPacket()
            disconnect_packet.player.name = name
            disconnect_packet.update = tcp_packet.DisconnectPacket.NORMAL

            return

    sock.close()
Beispiel #11
0
import player_pb2

PB_FILE_PATH = 'player.pb'
JSON_FILE_PATH = 'player.json'

players = player_pb2.Players()
player1 = player_pb2.Player()
player1.id = '1'
player1.name = '1'
for i in range(10):
    player1.scores.append(i)
player2 = player_pb2.Player()
player2.id = '1'
player2.name = '1'
for i in range(10, 20):
    player2.scores.append(i)
players.players.append(player1)
players.players.append(player2)

# 以二进制形式保存
f = open(PB_FILE_PATH, "wb")
f.write(players.SerializeToString())
f.close()

# 读players
players = player_pb2.Players()
f = open(PB_FILE_PATH, "rb")
players.ParseFromString(f.read())
f.close()
from google.protobuf.json_format import MessageToJson  # 关键
json = MessageToJson(players)