public void Open(NetPeerConfiguration config) { config.UseMessageRecycling = true; config.NetworkThreadName = "LidgrenNetworkTransporter"; config.EnableMessageType(NetIncomingMessageType.StatusChanged); config.EnableMessageType(NetIncomingMessageType.ConnectionLatencyUpdated); //config.EnableMessageType(NetIncomingMessageType.ConnectionApproval); config.EnableMessageType(NetIncomingMessageType.Data); config.EnableMessageType(NetIncomingMessageType.NatIntroductionSuccess); config.EnableMessageType(NetIncomingMessageType.UnconnectedData); config.EnableMessageType(NetIncomingMessageType.DebugMessage); config.EnableMessageType(NetIncomingMessageType.VerboseDebugMessage); config.EnableMessageType(NetIncomingMessageType.WarningMessage); config.EnableMessageType(NetIncomingMessageType.ErrorMessage); config.EnableMessageType(NetIncomingMessageType.Error); _lastSampledFrame = -1; _connections = new Dictionary <NetConnection, ConnectionId>(config.MaximumConnections); _connectionsById = new ArrayDictionary <ConnectionId, NetConnection>( connId => connId.Value, i => new ConnectionId(i), config.MaximumConnections); _latencyTable = new ArrayDictionary <ConnectionId, float>( connId => connId.Value, i => new ConnectionId(i), config.MaximumConnections); _connectionIdPool = new Stack <ConnectionId>(config.MaximumConnections); for (int i = config.MaximumConnections - 1; i >= 0; i--) { _connectionIdPool.Push(new ConnectionId(i)); } _netPeer = new NetPeer(config); _netPeer.Start(); Debug.Log("internal endpoint is: " + UnityEngine.Network.player.ipAddress); _internalEndpoint = new IPEndPoint(IPAddress.Parse(UnityEngine.Network.player.ipAddress), _netPeer.Port); _status = TransporterStatus.Open; Debug.Log("Opened Lidgren transporter at " + _netPeer.Socket.LocalEndPoint); }
public void Close() { if (_status == TransporterStatus.Open) { _netPeer.Shutdown("Close"); var connectionIds = _connections.Values; foreach (var connectionId in connectionIds) { if (OnConnectionClosed != null) { OnConnectionClosed(connectionId); } } _connections.Clear(); _connectionsById.Clear(); _status = TransporterStatus.Closed; } }
public void Open(NetPeerConfiguration config) { _approveConnection = ApproveConnection; _denyConnection = DenyConnection; config.UseMessageRecycling = true; config.NetworkThreadName = "LidgrenNetworkTransporter"; config.EnableMessageType(NetIncomingMessageType.StatusChanged); config.EnableMessageType(NetIncomingMessageType.ConnectionLatencyUpdated); config.EnableMessageType(NetIncomingMessageType.ConnectionApproval); config.EnableMessageType(NetIncomingMessageType.Data); config.EnableMessageType(NetIncomingMessageType.NatIntroductionSuccess); config.EnableMessageType(NetIncomingMessageType.UnconnectedData); config.EnableMessageType(NetIncomingMessageType.DebugMessage); config.EnableMessageType(NetIncomingMessageType.VerboseDebugMessage); config.EnableMessageType(NetIncomingMessageType.WarningMessage); config.EnableMessageType(NetIncomingMessageType.ErrorMessage); config.EnableMessageType(NetIncomingMessageType.Error); _lastSampledFrame = -1; _awaitingApprovals = new Dictionary <ApprovalSecret, NetConnection>(config.MaximumConnections); _connections = new Dictionary <NetConnection, ConnectionId>(config.MaximumConnections); _connectionsById = new ArrayDictionary <ConnectionId, NetConnection>(_connectionIdPool.MaxConnectionIds); _latencyInfo = new LatencyInfo(_connectionIdPool.MaxConnectionIds); _netPeer = new NetPeer(config); _netPeer.Start(); Debug.Log("internal endpoint is: " + UnityEngine.Network.player.ipAddress); _internalEndpoint = new IPEndPoint(IPAddress.Parse(UnityEngine.Network.player.ipAddress), _netPeer.Port); _status = TransporterStatus.Open; Debug.Log("Opened Lidgren transporter at " + _netPeer.Socket.LocalEndPoint); }