Example #1
0
        /// <summary>
        /// Start up the network manager. This should be called by Lobby.cs
        /// when the server host IP has been discovered and is connectable.
        /// </summary>
        ///
        /// <param name="serverAddr">
        /// As server, local IP address to host on.
        /// As client, remote server IP address to connect to.
        /// </param>
        ///
        /// <param name="nwMode">
        /// Are you the server or client?
        /// </param>
        ///
        /// <param name="useDNS">
        /// If serverAddr is a local IP, convert it via DNS? Set to false if using wifi-direct IP address.
        /// </param>
        ///
        /// <returns>
        /// True if successful.
        /// If client, use this.NetworkHost.ConnectionCount == 1 afterwards to confirm connection to server.
        /// </returns>
        public bool Run(string serverAddr, NetworkMode nwMode, bool useDNS = true)
        {
            ServerAddress = serverAddr;
            Mode          = nwMode;

            // Construct serializer and packet queue
            Serializer  = new XMLPacketSerializer();
            PacketQueue = new PacketQueue(Serializer);

            // Create and configure host
            if (Mode == NetworkMode.Server)
            {
                // Convert any "local address" to the "dns local address"
                if (useDNS && NetworkHost.IsLocalAddress(ServerAddress))
                {
                    ServerAddress = NetworkHost.GetLocalAddress();
                }

                // Server, configures socket to be "known" at this address
                Debug.Log("NetworkManager: As a server, I am using server IP: " + ServerAddress);
                NetworkHost = new NetworkHost(ServerAddress, ServerPort, 4);
            }
            else
            {
                // Client, connect to server
                NetworkHost = new NetworkHost(4);
            }

            // Configure channels and open/allow connections.
            NetworkHost.ConfigureChannel("info", ChannelType.ReliableSequenced);
            NetworkHost.ConfigureChannel("state", ChannelType.UnreliableStateUpdate);
            NetworkHost.ConfigureChannel("input", ChannelType.ReliableStateUpdate);
            bool rv = NetworkHost.Open();

            if (!rv)
            {
                NetworkHost.Dispose();
                NetworkHost = null;
                return(false);
            }

            // Connect client to server
            if (Mode == NetworkMode.Client)
            {
                Debug.Log("NetworkManager: As a client, I am using server IP: " + ServerAddress);
                NetworkHost.Connect(ServerAddress, ServerPort);
            }

            // Allow FixedUpdate() to run.
            IsRunning = true;

            return(true);
        }
Example #2
0
    // Use this for initialization
    void Start()
    {
        KnownPeople = new HashSet <NetworkInfo>();
        Serializer  = new JSONPacketSerializer();

        //
        Network = new NetworkHost(9560, 1);
        Network.ConfigureChannel("broadcast", ChannelType.UnreliableUnordered);
        Network.Open();

        // Mark broadcast credentials
        Network.SetBroadcastCredentials(1234, 1);

        //
        NetworkHost.StartBroadcast(Network, Encoding.ASCII.GetBytes(NetworkHost.GetLocalAddress()));

        //
        var textUi = GetComponent <Text>();

        textUi.text = "";
    }