コード例 #1
0
ファイル: LanClient.cs プロジェクト: daxingyou/AraleEngine
    public override void OnReceivedBroadcast(string fromAddress, string data)
    {
        base.OnReceivedBroadcast(fromAddress, data);
        foreach (string key in broadcastsReceived.Keys)
        {
            NetworkBroadcastResult r = broadcastsReceived [key];
            string s = new UnicodeEncoding().GetString(r.broadcastData, 0, r.broadcastData.Length);
            Log.d(s, Log.Tag.Net);

            string   ip = s.Substring(0, s.IndexOf(':'));
            HostInfo hi = mHosts.Find(delegate(HostInfo a)
            {
                return(a.ip == ip);
            });
            if (hi == null)
            {
                string[] ss = s.Split(':');
                hi    = new HostInfo();
                hi.ip = ss[0];
                short.TryParse(ss[1], out hi.port);
                hi.name = ss[2];
                mHosts.Add(hi);
                EventMgr.single.PostEvent("Game.AddHost", hi);
            }
            hi.time = Time.realtimeSinceStartup;
        }
    }
コード例 #2
0
    public void AddNewServers(Dictionary <string, NetworkBroadcastResult> servers)
    {
        foreach (string serverAddress in servers.Keys)
        {
            NetworkBroadcastResult serverData = servers[serverAddress];

            if (lanEntries.ContainsValue(serverAddress))
            {
                continue;
            }

            Debug.LogWarning("Spawn Entry: " + serverAddress);
            GameObject newServer = (GameObject)Instantiate <GameObject>(transform.Find("ServerEntry").gameObject);

            newServer.transform.Find("Name").GetComponent <Text>().text = "LAN: " + serverAddress;
            //newServer.transform.Find("Size").GetComponent<Text>().text = serverInfo.currentSize + " / " + serverInfo.maxSize;
            //newServer.transform.Find("Pass").GetComponent<Text>().text = (serverInfo.isPrivate == true ? "T" : "F");

            newServer.GetComponent <MatchInfoContainer>().lanAddress = serverAddress;

            lanEntries.Add(newServer, serverAddress);
        }

        UpdateContentWindow();
    }
コード例 #3
0
    public void CreateServerList(Dictionary <string, NetworkBroadcastResult> broadCastResult)
    {
        List <Transform> childs = new List <Transform> ();

        foreach (Transform child in infoCellPrefab.transform.parent)
        {
            childs.Add(child);
        }
        childs.ForEach((Transform t) =>
        {
            if (t != infoCellPrefab.transform)
            {
                Destroy(t.gameObject);
            }
        });

        if (broadCastResult == null)
        {
            return;
        }

        foreach (string key in broadCastResult.Keys)
        {
            NetworkBroadcastResult result = broadCastResult [key];
            string infoText = key.Replace("::ffff:", "");

            GameObject cloneCell = Instantiate(infoCellPrefab.gameObject) as GameObject;
            cloneCell.gameObject.SetActive(true);
            cloneCell.transform.SetParent(infoCellPrefab.transform.parent, false);
            ServerInfoCell infoCell = cloneCell.GetComponent <ServerInfoCell> ();
            infoCell.Init(infoText, infoText);
        }
    }
    private void OnMatchConnectClick(NetworkBroadcastResult p_match)
    {
        NetworkManagerSingleton.singleton.networkAddress = p_match.serverAddress;
        NetworkManagerSingleton.singleton.StartClient();

        NetworkManagerSingleton.onClientConnect += OnClientConnect;

        NetworkManagerSingleton.Discovery.StopBroadcast();

        _hasConnected = true;
    }
コード例 #5
0
    IEnumerator SetServerIP()
    {
        while (!serverIPSet)
        {
            foreach (string key in discovery.broadcastsReceived.Keys)
            {
                NetworkBroadcastResult networkBroadcastResult = discovery.broadcastsReceived[key];

                ipAddress = networkBroadcastResult.serverAddress.Substring(7, networkBroadcastResult.serverAddress.Length - 7);
                Connect();
                break;
            }
            yield return(new WaitForSeconds(0.5f));
        }
    }
コード例 #6
0
ファイル: RoomBroadcaster.cs プロジェクト: shenchi/MiniWar
    void OnGUI()
    {
        if (!showGUI)
        {
            return;
        }

        int num  = 10 + offsetX;
        int num2 = 40 + offsetY;

        if (Application.platform == RuntimePlatform.WebGLPlayer)
        {
            return;
        }

        if (running)
        {
            if (isClient)
            {
                GUI.Label(new Rect((float)num, (float)num2, 200f, 20f), "Rooms (in LAN):");
                num2 += 24;
            }

            if (broadcastsReceived != null)
            {
                foreach (string current in broadcastsReceived.Keys)
                {
                    NetworkBroadcastResult networkBroadcastResult = broadcastsReceived[current];
                    if (GUI.Button(new Rect((float)num, (float)(num2 + 20), 200f, 20f), "Game at " + current) && useNetworkManager)
                    {
                        string   text  = BytesToString(networkBroadcastResult.broadcastData);
                        string[] array = text.Split(new char[]
                        {
                            ':'
                        });
                        if (array.Length == 3 && array[0] == "NetworkManager" && NetworkManager.singleton != null && NetworkManager.singleton.client == null)
                        {
                            NetworkManager.singleton.networkAddress = array[1];
                            NetworkManager.singleton.networkPort    = Convert.ToInt32(array[2]);
                            NetworkManager.singleton.StartClient();
                        }
                    }
                    num2 += 24;
                }
            }
        }
    }
コード例 #7
0
    void Update()
    {
        if (netDiscovery.isClient)
        {
            if (netDiscovery.broadcastsReceived.Count == 0)
            {
                elapsedTime += Time.deltaTime;
                if (elapsedTime > waitSecondsForServer)
                {
                    netDiscovery.StopBroadcast();
                    netDiscovery.StartAsServer();
                    netManager.StartHost();
                    Debug.Log("No hosts were found, setting up as a host.");
                    if (connectingWindow != null)
                    {
                        connectingWindow.SetActive(false);
                    }
                }
            }
            else if (!isConnected)
            {
                var brdReceived = netDiscovery.broadcastsReceived;
                var brdKeys     = brdReceived.Keys.ToArray();
                NetworkBroadcastResult invitation = brdReceived[brdKeys[0]];
                string msg = NetworkDiscovery.BytesToString(invitation.broadcastData);
                Debug.Log("Broadcast from host at " + invitation.serverAddress + " was received: " + msg);
                Debug.Log("Port: " + msg.Split(':')[2]);
                netManager.networkPort    = int.Parse(msg.Split(':').Last()); //NetworkManager:address:port
                netManager.networkAddress = invitation.serverAddress;
                netManager.StartClient();
                isConnected = true;
                netDiscovery.StopBroadcast();
                if (connectingWindow != null)
                {
                    connectingWindow.SetActive(false);
                }
                NetworkManager.singleton.client.RegisterHandler(MsgType.Disconnect, OnNetworkDisconnect);
            }
        }

        if (isConnected && !NetworkManager.singleton.client.handlers.ContainsValue(OnNetworkDisconnect))
        {
            NetworkManager.singleton.client.RegisterHandler(MsgType.Disconnect, OnNetworkDisconnect);
        }
    }
コード例 #8
0
ファイル: PTGameManager.cs プロジェクト: BlokParty/WarGame
 /**
  * \brief Constructor of a broadcast
  *
  * @param nbr NetworkBroadcastResult
  *
  */
 public Broadcast(NetworkBroadcastResult nbr)
 {
     serverAddress = nbr.serverAddress.Contains("::ffff:") ?
                     nbr.serverAddress.Substring(7) : nbr.serverAddress;
     data = System.Text.Encoding.Unicode.GetString(nbr.broadcastData);
 }
コード例 #9
0
ファイル: MatchButton.cs プロジェクト: Racaoma/TicTacToe
 //Update Info (LAN)
 public void updateInfo(NetworkBroadcastResult networkData)
 {
     GetComponentInChildren <Text>().text = Encoding.Unicode.GetString(networkData.broadcastData);
     this.networkDataBroadcast            = networkData;
 }