Esempio n. 1
0
    private void HandleGetPeersMessage(string message)
    {
        Debug.Log("P2PConnection: handle get peers message");
        PeersMessage peersMessage = new PeersMessage(peerToPeerManager.peers);

        Debug.Log("# of known peers = " + peerToPeerManager.peers.Count);
        CreateAndSendMessage(peersMessage);
        Debug.LogWarning("P2PConnection: message sent!");
    }
Esempio n. 2
0
    private void HandlePeersMessage(string peersMessage)
    {
        Debug.LogWarning("P2PConnection: handle peers message");

        //PeersMessage peersMessage = JsonUtility.FromJson<PeersMessage>(message);


        JObject jObj       = JObject.Parse(peersMessage);
        JToken  peersToken = jObj.GetValue("peers");

        PeersMessage peersMessageInstance = new PeersMessage(JsonConvert.DeserializeObject <Dictionary <string, string> >(peersToken.ToString()));

        Debug.Log("P2PConnection: peers message content = " + peersMessageInstance.ToString());

        peerToPeerManager.AddIncommingMessage(peersMessageInstance);



        //peerToPeerManager.AddIncommingMessage(peersMessage);
    }
Esempio n. 3
0
    private void HandlePeersMessage(PeersMessage peersMessage)
    {
        Debug.Log("handling peers message!");
        //parsed message should contain a dictionary
        //iteratate through it and send hello message to each node
        if (peersMessage.peers == null)
        {
            Debug.Log("Manager of " + myClientName + ": Received empty peers message");
            return;
        }

        foreach (KeyValuePair <string, string> entry in peersMessage.peers)
        {
            string playerName = entry.Key;
            string ipAndPort  = entry.Value;

            string[] splits = ipAndPort.Split(':');
            string   ip     = splits[0];
            int      port   = Int32.Parse(splits[1]);

            Debug.Log("received ip = " + ip + " first ip = " + ipOfFirstPeerConnecton + " received port = " + port + " fist port = " + remotePort);

            if (ip.Equals(ipOfFirstPeerConnecton) && port == remotePort)
            {
                sockets.Add(playerName, connectionToFirstPeer);
                peers.Add(playerName, ipAndPort);
                connectionToFirstPeer.clientName = playerName;
                Debug.Log("added first peer to dictionaries");
                connectionToFirstPeer = null;
            }
            else
            {
                if (!peers.ContainsKey(playerName))
                {
                    PeerToPeerClient anotherClient = new PeerToPeerClient(this, ip, port, playerName);
                    sockets.Add(playerName, anotherClient);
                    peers.Add(playerName, ipAndPort);
                    Debug.Log("Manager of " + myClientName + ": Added new Player to known peers: " + playerName + " - " + ipAndPort);
                }
            }

            // do something with entry.Value or entry.Key
        }
        //now send hello message
        Debug.Log("Manager of " + myClientName + ": sending hello message known peers: " + string.Join(";", peers));
        HelloMessage helloMessage = new HelloMessage(myClientName, playersPosition, peers[myClientName]);

        Thread.Sleep(5000);
        foreach (KeyValuePair <string, PeerToPeerConnection> entry in sockets)
        {
            Debug.Log("Manager of " + myClientName + ": sending hello message to " + entry.Key);

            entry.Value.CreateAndSendMessage(helloMessage);
        }
        //annahme jetzt kennen mich einfach alle #fame
        //seclect one randomly and ask for world model
        List <string> keyList = new List <string>(sockets.Keys);

        System.Random rand      = new System.Random();
        string        randomKey = keyList[rand.Next(keyList.Count)];

        Debug.Log("sending get state message to " + randomKey);
        sockets[randomKey].SendGetState();
        //ask everybody for position

        /*OPTIONAL START!(gilt nicht für erste instanz)
         *
         *
         * 3.sendden einer hello message mit eigenen spielernamen(nee erst wenn alle verbindungen aufgebaut sind?)
         * 4.senden eines getip -> getPeers an obigen server -> liefert ips UND PORTS!
         * 5.beim erhalt der ips über einen peerToPeer client
         * a) Aufbau einer client verbindung zu jeder erhaltenen ip adresse
         * b) senden einer hello nachricht an jede der aufgebauten sockts
         * b) Spielerposition kommt als Antwort auf hello Nachricht
         *
         * OPTIONAL ENDE!
         * */
    }