Esempio n. 1
0
    void Initialize()
    {
        Application.runInBackground = true; // for debugging purposes
        DontDestroyOnLoad(gameObject);

        NetworkTransport.Init();
        ConnectionConfig config = new ConnectionConfig();

        channelReliable = config.AddChannel(QosType.ReliableSequenced);
        HostTopology topology = new HostTopology(config, maxConnections);

        serverSocket = NetworkTransport.AddHost(topology, port);
        Debug.Log("SERVER: socket opened: " + serverSocket);

        Packet p = new Packet(PacketType.MESSAGE);

        p.Write("Hi its the server broadcasting!");

        byte error;
        bool success = NetworkTransport.StartBroadcastDiscovery(
            serverSocket, port - 1, key, version, subversion,
            p.getData(), p.getSize(), 500, out error);

        if (!success)
        {
            Debug.Log("SERVER: start broadcast discovery failed!");
        }
        else if (NetworkTransport.IsBroadcastDiscoveryRunning())
        {
            Debug.Log("SERVER: started and broadcasting");
        }
        else
        {
            Debug.Log("SERVER: started but not broadcasting!?");
        }
    }
        public override void ClientConnect(string address)
        {
            // LLAPI can't handle 'localhost'
            if (address.ToLower() == "localhost")
            {
                address = "127.0.0.1";
            }

            HostTopology hostTopology = new HostTopology(connectionConfig, 1);

            // important:
            //   AddHost(topology) doesn't work in WebGL.
            //   AddHost(topology, port) works in standalone and webgl if port=0
            clientId = NetworkTransport.AddHost(hostTopology, 0);

            clientConnectionId = NetworkTransport.Connect(clientId, address, port, 0, out error);
            NetworkError networkError = (NetworkError)error;

            if (networkError != NetworkError.Ok)
            {
                Debug.LogWarning("NetworkTransport.Connect failed: clientId=" + clientId + " address= " + address + " port=" + port + " error=" + error);
                clientConnectionId = -1;
            }
        }
Esempio n. 3
0
    public void Init()
    {
        NetworkTransport.Init();
        ConnectionConfig cc = new ConnectionConfig();

        reliableChannel = cc.AddChannel(QosType.Reliable);
        HostTopology topo = new HostTopology(cc, MAT_USER);

        hostID = NetworkTransport.AddHost(topo, 0);

#if !UNITY_WEBGL || UNITY_EDITOR
        // Standalone client
        connectionId = NetworkTransport.Connect(hostID, SERVER_IP, PORT, 0, out error);
        Debug.Log("Connecting from standalone");
#else
        // Web client
        connectionId = NetworkTransport.Connect(hostID, SERVER_IP, WEB_PORT, 0, out error);
        Debug.Log("Connecting from Web");
#endif

        Debug.Log(string.Format("Attempting to connect on port {0}...", SERVER_IP));

        isStarted = true;
    }
Esempio n. 4
0
        public CTerminal()
        {
            int port = NetworkConst.CONN_PORT;

            m_TerminalType             = TERMINAL_TYPE.CLIENT;
            m_ConnectedTerminalInfoMap = new Dictionary <int, RemoteTerminalInfo>();
            m_ConnectedIpSet           = new HashSet <string>();
            m_Buffer = new ByteArray(NetworkConst.MAX_PACKET_LEN);


            NetworkTransport.Init();
            ConnectionConfig config = new ConnectionConfig();

            m_ReliableChannelID   = config.AddChannel(QosType.ReliableSequenced);
            m_UnreliableChannelID = config.AddChannel(QosType.Unreliable);

            #region EXTRA CHANNEL
            #endregion

            HostTopology topo = new HostTopology(config, NetworkConst.MAX_CONNECTIONS);
            m_HostID = NetworkTransport.AddHost(topo, port, null);

            Debug.Log("<color=cyan>Host Established, HostId: " + m_HostID + "</color>");
        }
Esempio n. 5
0
 public void Connect(string address, int port, object settings, out byte error)
 {
     serverHostId       = NetworkTransport.AddHost(new HostTopology((ConnectionConfig)settings, 1));
     serverConnectionId = NetworkTransport.Connect(serverHostId, address, port, 0, out error);
 }
Esempio n. 6
0
    // Use this for initialization
    IEnumerator Start()
    {
        Debug.LogFormat("Hello world, I am the server.");

        ConnectionConfig config = new ConnectionConfig();

        config.AddChannel(QosType.Unreliable);
        config.PacketSize = 1000;


        HostTopology top = new HostTopology(config, 10);
        int          me  = NetworkTransport.AddHost(top, 12345);

        Debug.LogFormat("I am host {0}", me);

        StartCoroutine(SendTime());

        byte[] buf = new byte[(64 * 1024) - 1];

        while (true)
        {
            yield return(null);

            int  hostId       = 0;
            int  connectionId = 0;
            int  channel      = 0;
            int  size         = 0;
            byte err          = 0;

            NetworkEventType evt = NetworkTransport.Receive(out hostId, out connectionId, out channel, buf, buf.Length, out size, out err);

            switch (evt)
            {
            case NetworkEventType.Nothing:
                break;

            case NetworkEventType.ConnectEvent:
                Connection c = new Connection {
                    host = hostId, connId = connectionId
                };
                m_connections.Add(c);
                Debug.LogFormat("Server got new connection id {0} from host {1}", connectionId, hostId);
                break;

            case NetworkEventType.DisconnectEvent:
                m_connections.RemoveAll(x => (x.host == hostId) && (x.connId == connectionId));
                Debug.LogFormat("Server lost connection {0} from host {1}", connectionId, hostId);
                break;

            case NetworkEventType.DataEvent:

                string s    = System.Text.Encoding.UTF8.GetString(buf, 0, size);
                string mesg = string.Format("Server receives message from host {0} on conn {1} channel {2}: \"{3}\"", hostId, connectionId, channel, s);
                Debug.Log(mesg);
                break;

            default:
                break;
            }
        }
    }
 protected override int GetSocket(HostTopology topology)
 {
     return(NetworkTransport.AddHost(topology, _socketPort));
 }
Esempio n. 8
0
    /**
     * Client punched through to a server
     * Perform sacred ritual to create a custom client and attempt to connect
     * through the hole.
     */
    void OnHolePunchedClient(int natListenPort, int natConnectPort)
    {
        // The port on the server that we are connecting to
        networkPort = natConnectPort;

        // Make sure to connect to the correct IP or things won't work
        if (hostExternalIP == natHelper.externalIP)
        {
            if (hostInternalIP == Network.player.ipAddress)
            {
                // Host is running on the same computer as client, two separate builds
                networkAddress = "127.0.0.1";
            }
            else
            {
                // Host is on the same local network as client
                networkAddress = hostInternalIP;
            }
        }
        else
        {
            // Host is somewhere out on the internet
            networkAddress = hostExternalIP;
        }

        Debug.Log("Attempting to connect to server " + networkAddress + ":" + networkPort);

        // Standard client setup stuff than the NetworkMager would normally take care of for us
        NetworkTransport.Init(globalConfig);
        if (customConfig)
        {
            foreach (QosType type in base.channels)
            {
                connectionConfig.AddChannel(type);
            }
        }
        else
        {
            connectionConfig.AddChannel(QosType.ReliableSequenced);
            connectionConfig.AddChannel(QosType.Unreliable);
        }

        // If we try to use maxConnection when the Advanced Configuration checkbox is not checked
        // we will get a crc mismatch because the host will have been started with the default
        // max players of 8 rather than the value in maxConnections
        int maxPlayers = 8;

        if (customConfig)
        {
            maxPlayers = maxConnections;
        }

        HostTopology topo = new HostTopology(connectionConfig, maxPlayers);

        // Start up a transport level host on the port that the hole was punched from
        int natListenSocketID = NetworkTransport.AddHost(topo, natListenPort);

        // Create and configure a new NetworkClient
        client = new NetworkClient();
        client.Configure(topo);

        // Connect to the port on the server that we punched through to
        client.Connect(networkAddress, networkPort);

        // Magic! Set the client's transport level host ID so that the client will use
        // the host we just started above instead of the one it creates internally when we call Connect.
        // This has to be done so that the connection will be made from the correct port, otherwise
        // Unity will use a random port to connect from and NAT Punchthrough will fail.
        // This is the shit that keeps me up at night.
        clientIDField.SetValue(client, natListenSocketID);

        // Tell Unity to use the client we just created as _the_ client so that OnClientConnect will be called
        // and all the other HLAPI stuff just works. Oh god, so nice.
        UseExternalClient(client);

        //StartClient();
    }
 public void StartClient(string address, int port)
 {
     NetworkTransport.Init();
     networkAddress     = address;
     networkPort        = port;
     IsClientConnecting = true;
     IsServer           = false;
     socketId           = useWebSockets ? NetworkTransport.AddWebsocketHost(CreateTopology(), 0) :  NetworkTransport.AddHost(CreateTopology(), 0);
     msgBuffer          = new byte[NetworkMessage.MaxMessageSize];
     OnStartClient();
 }
Esempio n. 10
0
    protected void init(int port, int maxConnections)
    {
        var topology = getTopology(maxConnections);

        _hostId = NetworkTransport.AddHost(topology, port);
    }
Esempio n. 11
0
 public void CreateHost(int port)
 {
     Disconnect();
     socketId = NetworkTransport.AddHost(topology, port);
 }
Esempio n. 12
0
    void Awake()
    {
        try
        {
            NetworkTransport.Init();

            serverConfig    = new ConnectionConfig();
            serverChannelId = serverConfig.AddChannel(QosType.StateUpdate); // QosType.UnreliableFragmented
            serverConfig.MaxSentMessageQueueSize = 2048;                    // 128 by default

            // start data server
            serverTopology = new HostTopology(serverConfig, maxConnections);

            if (!useWebSockets)
            {
                serverHostId = NetworkTransport.AddHost(serverTopology, listenOnPort);
            }
            else
            {
                serverHostId = NetworkTransport.AddWebsocketHost(serverTopology, listenOnPort);
            }

            if (serverHostId < 0)
            {
                throw new UnityException("AddHost failed for port " + listenOnPort);
            }

            bufferSize = NetworkMessage.MaxMessageSize;
            msgBuffer  = new byte[bufferSize];
            msgReader  = new NetworkReader(msgBuffer);

            // add broadcast host
            if (broadcastPort > 0 && !useWebSockets)
            {
                broadcastHostId = NetworkTransport.AddHost(serverTopology, 0);

                if (broadcastHostId < 0)
                {
                    throw new UnityException("AddHost failed for broadcast discovery");
                }
            }

            // set broadcast data
            string sBroadcastData = string.Empty;

#if (!UNITY_WSA)
            serverIpAddress = Network.player.ipAddress;
#else
            serverIpAddress = "127.0.0.1";
#endif
            string sHostInfo = "Server: " + serverIpAddress + ":" + listenOnPort;;

            if (serverStatusText)
            {
                serverStatusText.text = sHostInfo;
            }

            // start broadcast discovery
            sBroadcastData = "MARServer:" + serverIpAddress + ":" + listenOnPort;

            if (broadcastHostId >= 0)
            {
                broadcastOutBuffer = System.Text.Encoding.UTF8.GetBytes(sBroadcastData);
                byte error = 0;

                if (!NetworkTransport.StartBroadcastDiscovery(broadcastHostId, broadcastPort, 8888, 1, 0, broadcastOutBuffer, broadcastOutBuffer.Length, 2000, out error))
                {
                    throw new UnityException("Start broadcast discovery failed: " + (NetworkError)error);
                }
            }

            fCurrentTime = Time.time;

            if (connStatusText)
            {
                connStatusText.text = "Server running: 0 connection(s)";
            }
        }
        catch (System.Exception ex)
        {
            //LogErrorToConsole(ex.Message + "\n" + ex.StackTrace);

            if (connStatusText)
            {
                connStatusText.text = ex.Message;
            }
        }
    }
Esempio n. 13
0
    // Use this for initialization
    void Start()
    {
        // Connect to server
        NetworkTransport.Init();
        connectConfig = new ConnectionConfig();

        reliableChannel = connectConfig.AddChannel(QosType.ReliableSequenced);
        HostTopology topo = new HostTopology(connectConfig, MAX_CONNECTION);

        hostId       = NetworkTransport.AddHost(topo, port, null /*ipAddress*/);
        connectionId = NetworkTransport.Connect(hostId, serverIP, port, 0, out error);

        isConnected = true;

        int recHostId; // Player ID
        int channelID; // ID of channel connected to recHostId.

        byte[] recBuffer  = new byte[1024];
        int    bufferSize = 1024;
        int    dataSize;
        byte   error;

        // Get all camera objects
        cameraEmpty   = GameObject.Find("Camera1").GetComponent <Camera>();
        cameraMush    = GameObject.Find("Camera2").GetComponent <Camera>();
        cameraPancake = GameObject.Find("Camera3").GetComponent <Camera>();

        // Set new ingredient to the ingredient being held by the player
        // TODO

        // Send initial message to server (plate id from NFC tag)
        // TODO
        sendToServer("My unique tag");

        // Retrieve ingredients currently on plate from server
        NetworkEventType recData = NetworkTransport.Receive(out recHostId, out connectionId, out channelID,
                                                            recBuffer, bufferSize, out dataSize, out error);

        switch (recData)
        {
        case NetworkEventType.Nothing: break;

        case NetworkEventType.ConnectEvent:
            Debug.Log("Player " + connectionId + " has been connected to server.");
            break;

        case NetworkEventType.DataEvent:
            string message = Encoding.Unicode.GetString(recBuffer, 0, dataSize);
            Debug.Log("Server has sent: " + message);
            break;

        case NetworkEventType.DisconnectEvent:
            Debug.Log("Player " + connectionId + " has been disconnected to server");
            break;

        case NetworkEventType.BroadcastEvent:
            Debug.Log("Broadcast event.");
            break;
        }

        // Split up string of ingredients into list
        // TODO
        ingredients = new List <string>()
        {
        };

        ingList = GameObject.Find("Ingredient List").GetComponent <Text>();

        // Check if a recipe is on the plate
        // Display current ingredients/recipe on plate
        checkRecipe();
    }
Esempio n. 14
0
 public static void Init(int port, int maxconnection)
 {
     hostID = NetworkTransport.AddHost(TransportInit(maxconnection), port);
 }
 public void setupB()
 {
     socketPlayerTwo = NetworkTransport.AddHost(topology, portB);
     instancePlayer  = "p2";
 }
Esempio n. 16
0
    private void InitializeHost()
    {
        NetworkTransport.Shutdown();

        NetworkTransport.Init();

        ConnectionConfig config = new ConnectionConfig();

        channelId = config.AddChannel(QosType.Reliable);

        HostTopology topology = new HostTopology(config, 10);

        hostId = isServer ? NetworkTransport.AddHost(topology, SNBGlobal.defaultMatchPort) : NetworkTransport.AddHost(topology);
    }
Esempio n. 17
0
 public new void Connect(string address, int port, object settings, out byte error)
 {
     Debug.Log("WE GOT HERE TOO!");
     serverHostId       = NetworkTransport.AddHost(new HostTopology((ConnectionConfig)settings, 1), 0);
     serverConnectionId = NetworkTransport.Connect(serverHostId, address, port, 0, out error);
 }
Esempio n. 18
0
 public void setupA()
 {
     socketPlayerOne = NetworkTransport.AddHost(topology, portA);
     //socketPlayerOne = NetworkTransport.AddHost(topology, portA);
     isAorB = true;
 }
 public void StartServer()
 {
     NetworkTransport.Init();
     IsClientConnecting = false;
     IsServer           = true;
     socketId           = useWebSockets ? NetworkTransport.AddWebsocketHost(CreateTopology(), networkPort) :  NetworkTransport.AddHost(CreateTopology(), networkPort);
     msgBuffer          = new byte[NetworkMessage.MaxMessageSize];
     ClientConnections  = new Dictionary <int, LLNetworkConnection>();
     OnStartServer();
 }
Esempio n. 20
0
 public void setupB()
 {
     socketPlayerTwo = NetworkTransport.AddHost(topology, portB);
     //socketPlayerTwo = NetworkTransport.AddHost(topology, portB);
     isAorB = false;
 }
Esempio n. 21
0
    void OnGUI()
    {
        //GUI.Box(new Rect(5, 5, 450, 450), "window");
        if (!_isStarted)
        {
            if (myName == "")
            {
                GUI.Label(new Rect(274, 12, 100, 25), "YOUR NAME");
            }
            myName = GUI.TextField(new Rect(270, 10, 150, 25), myName);



            ip   = GUI.TextField(new Rect(10, 10, 250, 30), ip, 25);
            port = Convert.ToInt32(GUI.TextField(new Rect(10, 40, 250, 30), port.ToString(), 25));
#if !(UNITY_WEBGL && !UNITY_EDITOR)
            if (GUI.Button(new Rect(10, 70, 250, 30), "start server"))
            {
                _isStarted = true;
                _isServer  = true;
                NetworkTransport.Init();

                HostTopology topology = new HostTopology(m_Config, 12);
                m_WebSocketHostId = NetworkTransport.AddWebsocketHost(topology, port, null);                           //add 2 host one for udp another for websocket, as websocket works via tcp we can do this
                m_GenericHostId   = NetworkTransport.AddHost(topology, port, null);

                connectedUsers = new Dictionary <int, string>();
                //connectedUsers.Add(m_ConnectionId, "host");//this should have the host send messages to themseleves but it doesnt work...
            }
#endif
            if (GUI.Button(new Rect(10, 100, 250, 30), "start client"))
            {
                _isStarted = true;
                _isServer  = false;
                NetworkTransport.Init();

                HostTopology topology = new HostTopology(m_Config, 12);

                //I don't get what needs to be done for web clients to connect?
                m_GenericHostId = NetworkTransport.AddHost(topology, 0);                 //any port for udp client, for websocket second parameter is ignored, as webgl based game can be client only
                byte error;
                m_ConnectionId = NetworkTransport.Connect(m_GenericHostId, ip, port, 0, out error);
            }
        }
        else        //Is started
        {
            GUI.Label(new Rect(10, 20, 250, 500), "Sent: " + m_SendString);
            GUI.Label(new Rect(10, 70, 250, 50), "Recv: " + recievedCount);


            if (GUI.Button(new Rect(10, 120, 250, 50), "stop"))
            {
                _isStarted = false;
                NetworkTransport.Shutdown();
            }
            GUI.Label(new Rect(400, 75, 150, 25), "Message...");
            textString = GUI.TextField(new Rect(400, 100, 150, 25), textString);
            if (GUI.Button(new Rect(10, 175, 250, 50), "send"))
            {
                // Byte[] data = new Byte[5];
                // data[0] = Convert.ToByte(textString.ToString()[0]);

                if (_isServer)//send to all players
                {
                    chatMessages.Add(myName + ": " + textString);
                    foreach (var connection in connectedUsers)
                    {
                        //  NetworkTransport.Send(hostId, connection.Key, m_CommunicationChannel, NetworkConverter.StrToNet(textString), textString.Length, out error);

                        NetworkMessage.Send(hostId, connection.Key, m_CommunicationChannel, MessageType.message, myName + ": " + textString);
                    }
                }
                else//send to server, and have server send to all players (later)
                {
                    //NetworkTransport.Send(hostId, connId, m_CommunicationChannel, NetworkConverter.StrToNet(textString), textString.Length, out error);

                    NetworkMessage.Send(hostId, connId, m_CommunicationChannel, MessageType.message, textString);
                }
            }
            GUI.Label(new Rect(Screen.width - 500, 120, 450, 400), "Messages:");
            scrollPosition = GUI.BeginScrollView(new Rect(Screen.width - 500, 150, 450, 400), scrollPosition, new Rect(0, 0, 425, 30 * chatMessages.Count + 60));

            for (int i = 0; i < chatMessages.Count; i++)
            {
                GUI.Label(new Rect(0, i * 30, 400, 25), chatMessages[i]);
            }

            GUI.EndScrollView();
        }//Is started
    }
Esempio n. 22
0
    public void init()
    {
        // protocol init
        NetworkTransport.Init();
        ClientNET_RecieaveFunction.init(this);
        ClientNET_SendFunction.init(this);

        ConnectionConfig cc = new ConnectionConfig();

        reliableChanel   = cc.AddChannel(QosType.Reliable); // ReliableSequenced, Reliable
        unReliableChanel = cc.AddChannel(QosType.Unreliable);

        HostTopology topo = new HostTopology(cc, MAX_USER);

        hostId = NetworkTransport.AddHost(topo, 0);

        /*--------------------------------------------------*/

        Debug.Log(ServerHost);
        ConnectionMenu.setConnectionStatusMessage("connecting to " + ServerHost);
        if (ServerHost != "localhost" && ServerHost != "127.0.0.1")   // FIXME: check if is on local area
        // check if player is connected
        {
            try {
                IPAdress = System.Net.Dns.GetHostEntry("google.com").AddressList[0].ToString();
                ConnectionMenu.setConnectionStatusMessage("Checking connection status.");
                Debug.Log("Checking connection status.");
            } catch (System.Exception e) {
                ConnectionMenu.setConnectionStatusMessage("error: you are not connected to the internet.");
                Debug.Log("error: you are not connected to the internet.");
                disconnect(); // disconnect client
            }
        }

        // resolve hostname
        try {
            IPAdress = System.Net.Dns.GetHostEntry(ServerHost).AddressList[0].ToString();
            ConnectionMenu.setConnectionStatusMessage("Resolving hostname " + ServerHost);
            canConnect = true;
        } catch (System.Exception e) {
            ConnectionMenu.setConnectionStatusMessage("error: hostname " + ServerHost + " dosen't exist");
            Debug.Log("error: hostname " + ServerHost + "dosen't exist");
            disconnect(); // disconnect client
        }

        /*--------------------------------------------------*/
        if (canConnect)
        {
            // try to connect
            connectionId = NetworkTransport.Connect(hostId, IPAdress, PORT, 0, out error);
            Debug.Log("try to connect to " + ServerHost + " |  " + IPAdress + ":" + PORT);
            ConnectionMenu.setConnectionStatusMessage("Connecting to " + ServerHost + ":" + PORT + "...");

            if (error != 0)
            {
                Debug.Log("can't connect to server | error: " + error + " | retriying...");
                ConnectionMenu.setConnectionStatusMessage("can't connect to server | error: " + error + " | retriying...");
                init();
            }
            else
            {
                isStarted = true;
            }
        }
    }
Esempio n. 23
0
 public int AddHost(HostTopology topology, int port, string ip)
 {
     return(NetworkTransport.AddHost(topology, port, ip));
 }
Esempio n. 24
0
    void Start()
    {
        audioS = GetComponent <AudioSource>();
        Application.targetFrameRate = 60;

        /*if(GlobalClass.nn == 1)
         * {
         *  ser.GetComponent<Server>().enabled = true;
         *  ser.GetComponent<Server>().StartServer();
         * }*/
        if (rede)
        {
            NetworkTransport.Init();
            ConnectionConfig cc = new ConnectionConfig();

            reliableChannel     = cc.AddChannel(QosType.Reliable);
            unreliableChannel   = cc.AddChannel(QosType.Unreliable);
            cc.SendDelay        = 0;
            cc.MinUpdateTimeout = 1;
            //int teste = cc.AddChannel(QosType.)
            HostTopology topo = new HostTopology(cc, max_c);
            //NetworkTransport.host
            //if(GlobalClass.nn == 1)
            //{
            //criar host/server

            //if(hostId != -1)
            GlobalClass.floorSkin = GlobalClass.HostArena;
            if (GlobalClass.nn == 1)//HOST
            {
                Debug.Log(GlobalClass.nn + "Global");
                hostId = NetworkTransport.AddHost(topo, porta);
                Debug.Log("hostId: " + hostId);
                isHost = true;
                Debug.Log("Socket aberto com ID: " + hostId);
                meuID        = 2;
                p1text.text  = "Inimigo";
                p2text.text  = "Eu";
                p2text.color = Color.green;
                player1.GetComponent <Character>().nPlayer = 2;
                player1.GetComponent <Character>().setMaterials(meuID, materials[0]);
                player2.GetComponent <Character>().nPlayer = 1;
                player2.GetComponent <Character>().setMaterials(meuID, materials[GlobalClass.pSkin]);
                hostSkin.sprite  = materials[GlobalClass.pSkin].sprite;
                hostSkin.enabled = true;
                SetArena();
                mapB.NewLayer();

                //player2.GetComponent<Character>().setMaterial(2);
                //player1.GetComponent<Character>().setMaterial(1);
                numP.text = "Player " + meuID.ToString();
                //Enviar("Teste|", reliableChannel);

                string ip = LocalIPAddress();
                HostIpText.text = ip;
                if (GlobalClass.broadcast)
                {
                    broadcastData = "Host:" + ip;
                    byte[] bmsg = GetBytes(broadcastData);
                    if (NetworkTransport.IsBroadcastDiscoveryRunning())
                    {
                        Debug.Log("Broadcast Already Running");
                        NetworkTransport.StopBroadcastDiscovery();
                        NetworkTransport.RemoveHost(0);
                    }
                    //NetworkTransport.StopBroadcastDiscovery();
                    NetworkTransport.StartBroadcastDiscovery(hostId, clientPort, broadcastKey,
                                                             broadcastVersion, broadcastSubVersion, bmsg, bmsg.Length, 500, out error);
                }
                conectou = true;
            }
            else//CLIENTE
            {
                Debug.Log(GlobalClass.nn + "Global");

                isClient = true;

                hostId = NetworkTransport.AddHost(topo, clientPort);
                Debug.Log("host id: " + hostId);
                if (GlobalClass.broadcast)
                {
                    NetworkTransport.SetBroadcastCredentials(hostId, broadcastKey, broadcastVersion,
                                                             broadcastSubVersion, out error);
                }
                else
                {
                    connectionId = NetworkTransport.Connect(hostId, GlobalClass.ipAdress, porta, 0, out error);
                    //connectionId = NetworkTransport.Connect(hostId, "192.168.0.103", porta, 0, out error);
                    conectou = true;
                }
                HostIpText.text = GlobalClass.ipAdress;
                Debug.Log(connectionId + " ID");
            }
            //Debug.Log(hostId+ " hostID");
            //192.168.0.104
            //192.168.0.2
        }
    }
Esempio n. 25
0
    void Awake()
    {
        try
        {
            NetworkTransport.Init();

            serverConfig    = new ConnectionConfig();
            serverChannelId = serverConfig.AddChannel(QosType.StateUpdate); // QosType.UnreliableFragmented
            serverConfig.MaxSentMessageQueueSize = 2048;                    // 128 by default

            // start data server
            serverTopology = new HostTopology(serverConfig, maxConnections);

            if (!websocketHost)
            {
                serverHostId = NetworkTransport.AddHost(serverTopology, listenOnPort);
            }
            else
            {
                serverHostId = NetworkTransport.AddWebsocketHost(serverTopology, listenOnPort);
            }

            if (serverHostId < 0)
            {
                throw new UnityException("AddHost failed for port " + listenOnPort);
            }

            // add broadcast host
            if (broadcastPort > 0 && !websocketHost)
            {
                broadcastHostId = NetworkTransport.AddHost(serverTopology, 0);

                if (broadcastHostId < 0)
                {
                    throw new UnityException("AddHost failed for broadcast discovery");
                }
            }

            // set broadcast data
            string sBroadcastData = string.Empty;

#if (UNITY_STANDALONE_WIN)
            try
            {
                string      strHostName = System.Net.Dns.GetHostName();
                IPHostEntry ipEntry     = Dns.GetHostEntry(strHostName);
                IPAddress[] addr        = ipEntry.AddressList;

                string sHostInfo = "Host: " + strHostName;
                for (int i = 0; i < addr.Length; i++)
                {
                    if (addr[i].AddressFamily == AddressFamily.InterNetwork)
                    {
                        sHostInfo     += ", IP: " + addr[i].ToString();
                        sBroadcastData = "KinectDataServer:" + addr[i].ToString() + ":" + listenOnPort;
                        break;
                    }
                }

                sHostInfo += ", Port: " + listenOnPort;
                LogToConsole(sHostInfo);

                if (serverStatusText)
                {
                    serverStatusText.text = sHostInfo;
                }
            }
            catch (System.Exception ex)
            {
                LogErrorToConsole(ex.Message + "\n\n" + ex.StackTrace);

                if (serverStatusText)
                {
                    serverStatusText.text = "Use 'ipconfig' to see the host IP; Port: " + listenOnPort;
                }
            }
#else
            sBroadcastData = "KinectDataServer:" + "127.0.0.1" + ":" + listenOnPort;
#endif

            // start broadcast discovery
            if (broadcastHostId >= 0)
            {
                broadcastOutBuffer = System.Text.Encoding.UTF8.GetBytes(sBroadcastData);
                byte error = 0;

                if (!NetworkTransport.StartBroadcastDiscovery(broadcastHostId, broadcastPort, 8888, 1, 0, broadcastOutBuffer, broadcastOutBuffer.Length, 2000, out error))
                {
                    throw new UnityException("Start broadcast discovery failed: " + (NetworkError)error);
                }
            }

            liRelTime    = 0;
            fCurrentTime = Time.time;

            System.DateTime dtNow = System.DateTime.UtcNow;
            LogToConsole("Kinect data server started at " + dtNow.ToString());

            if (consoleMessages)
            {
                consoleMessages.text = "Kinect data server started at " + dtNow.ToString();
            }

            if (connStatusText)
            {
                connStatusText.text = "Server running: 0 connection(s)";
            }
        }
        catch (System.Exception ex)
        {
            LogErrorToConsole(ex.Message + "\n" + ex.StackTrace);

            if (connStatusText)
            {
                connStatusText.text = ex.Message;
            }
        }
    }
Esempio n. 26
0
    public void Connect()
    {
        NetworkTransport.Init();
        ConnectionConfig connectConfig = new ConnectionConfig();

        byte   error;
        string myIPaddress;

        /* Network configuration */
        connectConfig.AckDelay          = 33;
        connectConfig.AllCostTimeout    = 20;
        connectConfig.ConnectTimeout    = 1000;
        connectConfig.DisconnectTimeout = 5000;
        connectConfig.FragmentSize      = 500;
        connectConfig.MaxCombinedReliableMessageCount = 10;
        connectConfig.MaxCombinedReliableMessageSize  = 100;
        connectConfig.MaxConnectionAttempt            = 32;
        connectConfig.MaxSentMessageQueueSize         = 4096;
        connectConfig.MinUpdateTimeout      = 20;
        connectConfig.NetworkDropThreshold  = 40;        // we had to set these high to avoid UNet disconnects during lag spikes
        connectConfig.OverflowDropThreshold = 40;        //
        connectConfig.PacketSize            = 1500;
        connectConfig.PingTimeout           = 500;
        connectConfig.ReducedPingTimeout    = 100;
        connectConfig.ResendTimeout         = 500;

        reliableChannel = connectConfig.AddChannel(QosType.ReliableSequenced);
        HostTopology topo = new HostTopology(connectConfig, MAX_CONNECTION);

        if (hostId >= 0)
        {
            NetworkTransport.RemoveHost(hostId);
        }

        hostId       = NetworkTransport.AddHost(topo, port, null /*ipAddress*/);
        connectionId = NetworkTransport.Connect(hostId, getServerIp(), port, 0, out error);

        /* Check if there is an error */
        if ((NetworkError)error != NetworkError.Ok)
        {
            //Output this message in the console with the Network Error
            Debug.Log("There was this error: " + (NetworkError)error);
            isConnected = false;
        }
        else
        {
            isConnected = true;
            OnConnect();
        }

        switch ((NetworkError)error)
        {
        case NetworkError.WrongHost:
            warningText.text = "WrongHost";
            break;

        case NetworkError.WrongConnection:
            warningText.text = "WrongConnection";
            break;

        default:
            warningText.text = "";
            break;
        }
    }
Esempio n. 27
0
    void Awake()
    {
        instance = this;

        try
        {
            NetworkTransport.Init();

            clientConfig    = new ConnectionConfig();
            clientChannelId = clientConfig.AddChannel(QosType.StateUpdate);              // QosType.UnreliableFragmented

            // add client host
            clientTopology = new HostTopology(clientConfig, 1);
            clientHostId   = NetworkTransport.AddHost(clientTopology, clientPort);

            if (clientHostId < 0)
            {
                throw new UnityException("AddHost failed for client port " + clientPort);
            }

            if (broadcastPort > 0)
            {
                // add broadcast host
                bcastHostId = NetworkTransport.AddHost(clientTopology, broadcastPort);

                if (bcastHostId < 0)
                {
                    throw new UnityException("AddHost failed for broadcast port " + broadcastPort);
                }

                // start broadcast discovery
                byte error = 0;
                NetworkTransport.SetBroadcastCredentials(bcastHostId, 8888, 1, 0, out error);
            }

            // construct keep-alive data
            keepAliveData[0] = "ka,kb,km,kh";              // index 0
            sendKeepAlive[0] = true;

//			faceManager = GetComponent<FacetrackingManager>();
//			if(faceManager != null && faceManager.isActiveAndEnabled)
//			{
//				keepAliveData[1] = "ka,fp,";  // index 1
//				sendKeepAlive[1] = true;
//
//				if(faceManager.getFaceModelData)
//				{
//					keepAliveData[2] = "ka,fv,";  // index 2
//					sendKeepAlive[2] = true;
//
//					if(faceManager.texturedModelMesh == FacetrackingManager.TextureType.FaceRectangle)
//					{
//						keepAliveData[2] += "fu,";  // request uvs
//					}
//
//					keepAliveData[3] = "ka,ft,";  // index 3
//					sendKeepAlive[3] = true;
//				}
//			}

            keepAliveCount = keepAliveData.Length;
        }
        catch (System.Exception ex)
        {
            Debug.LogError(ex.Message + "\n" + ex.StackTrace);

            if (statusText)
            {
                statusText.text = ex.Message;
            }
        }
    }
 private void CreateHost(out int hostID, out int reliableChannelID, out int stateUpdateChannelId, out int unreliableChannelId, int port, int maxConnection)
 {
     hostID = NetworkTransport.AddHost(TransportInit(out reliableChannelID, out stateUpdateChannelId, out unreliableChannelId, maxConnection), port);
 }
Esempio n. 29
0
    public bool JoinServer()
    {
        playerName = findGameCanvas.transform.GetChild(1).GetChild(2).GetComponent <Text>().text;


        ip = findGameCanvas.transform.GetChild(2).GetChild(2).GetComponent <Text>().text;



        if (ip == "")
        {
            Debug.Log("you must have a server ip");
            return(false);
        }


        if (playerName == "")
        {
            Debug.Log("you must have a name");
            return(false);
        }


        ////turns on the lobby canvas
        //GameObject.Find("Lobby").GetComponent<Canvas>().enabled = true;

        //sets up a new conncetion config
        ConnectionConfig config = new ConnectionConfig();

        //reliable uses tcp to pass packets meaning it is reliable but slow
        reliableChannel = config.AddChannel(QosType.ReliableSequenced);

        //unreliable uses udp to pass packets meaning its unreliable but fast
        unreliablechannel = config.AddChannel(QosType.Unreliable);

        //sets up a topology
        HostTopology topo = new HostTopology(config, 3);

        //opens a socket on the trasport layer to send packets though
        hostID = NetworkTransport.AddHost(topo, 0);

        //sets the error to OK
        error = (byte)NetworkError.Ok;

        //sets up the connection id of the cl
        connectionID = NetworkTransport.Connect(hostID, ip, port, 0, out error);

        //if the is an error debug it
        if (error != (byte)NetworkError.Ok)
        {
            Debug.LogError("Network error is occurred: " + (NetworkError)error);
            SceneManager.LoadScene(0);
            return(false);
        }

        //the client is connected
        isConnected = true;


        Debug.Log("[Client] Connected");

        return(true);
    }
Esempio n. 30
0
    // Update is called once per frame
    void Update()
    {
        if (hostID <= EMPTY_HOST_ID)
        {
            if (Input.GetKeyDown(KeyCode.F1))
            {
                isServer = true;
            }
            if (Input.GetKeyDown(KeyCode.F2))
            {
                isServer = false;
            }
            if (Input.GetKeyDown(KeyCode.C))
            {
                if (isServer)
                {
                    NetworkTransport.Init();
                    ConnectionConfig connConfig = new ConnectionConfig();
                    reliableChannelID   = connConfig.AddChannel(QosType.Reliable);
                    unreliableChannelID = connConfig.AddChannel(QosType.Unreliable);
                    HostTopology hostTopology = new HostTopology(connConfig, maxPlayerCount);
                    hostID    = NetworkTransport.AddHost(hostTopology, serverPort);
                    recBuffer = new byte[recBufferSize];
                }
                else
                {
                    enabled = false;
                }
            }
        }
        else
        {
            NetworkEventType eventType = NetworkTransport.ReceiveFromHost(hostID, out recConnectionID, out channelID, recBuffer, recBufferSize, out receivedSize, out error);
            switch (eventType)
            {
            case NetworkEventType.ConnectEvent:
                int netCode = EMPTY_NETCODE;
                if (TryPortionNetCode(recConnectionID, out netCode))
                {
                    currentConnCount++;
                    // 通知新玩家设置自己的编号
                    sendBuffer = NetworkCommunicateHelper.ToPack(out sendBufferSize, "SetPlayerNo", netCode);
                    NetworkTransport.Send(hostID, recConnectionID, unreliableChannelID, sendBuffer, sendBufferSize, out error);

                    // 通知所有玩家设置各信息
                    List <object> synPlayerInfoDataList = new List <object>();
                    synPlayerInfoDataList.Add("SynchronizePlayerInfo");
                    for (int i = 0; i < currentConnCount; i++)
                    {
                        synPlayerInfoDataList.Add(netCodeList[i]);
                    }
                    sendBuffer = NetworkCommunicateHelper.ToPack(out sendBufferSize, synPlayerInfoDataList.ToArray());
                    SendToEveryPlayer(hostID, unreliableChannelID, sendBuffer, sendBufferSize, out error);

                    //// 通知所有玩家同步位置
                    //SynchronizeAllPlayerTransform();
                    Debug.Log("有新客户端连接,当前连接数 " + currentConnCount + "/" + maxPlayerCount);
                }
                break;

            case NetworkEventType.DataEvent:
                Debug.Log("接收到客户端的新数据");
                ExecuteInstruction(recConnectionID, NetworkCommunicateHelper.UnPack(recBuffer));
                break;

            case NetworkEventType.DisconnectEvent:
                int recyclePlayerNo = EMPTY_NETCODE;
                TryRecycleNetCode(recConnectionID, out recyclePlayerNo);
                Debug.Log("有客户端断开连接,当前连接数 " + currentConnCount + "/" + maxPlayerCount);
                break;

            case NetworkEventType.Nothing:
                Debug.Log("无数据");
                break;

            default:
                break;
            }

            //if (Time.time - lastSynchronizeTime > synchronizeFrequency)
            //{
            //    // 通知所有玩家同步位置
            //    SynchronizeAllPlayerTransform();
            //    lastSynchronizeTime = Time.time;
            //}
        }
    }