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; } }
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; }
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>"); }
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); }
// 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)); }
/** * 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(); }
protected void init(int port, int maxConnections) { var topology = getTopology(maxConnections); _hostId = NetworkTransport.AddHost(topology, port); }
public void CreateHost(int port) { Disconnect(); socketId = NetworkTransport.AddHost(topology, port); }
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; } } }
// 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(); }
public static void Init(int port, int maxconnection) { hostID = NetworkTransport.AddHost(TransportInit(maxconnection), port); }
public void setupB() { socketPlayerTwo = NetworkTransport.AddHost(topology, portB); instancePlayer = "p2"; }
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); }
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); }
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(); }
public void setupB() { socketPlayerTwo = NetworkTransport.AddHost(topology, portB); //socketPlayerTwo = NetworkTransport.AddHost(topology, portB); isAorB = false; }
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 }
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; } } }
public int AddHost(HostTopology topology, int port, string ip) { return(NetworkTransport.AddHost(topology, port, ip)); }
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 } }
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; } } }
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; } }
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); }
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); }
// 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; //} } }