Example #1
0
 private void OnRealTimeConnect(IVNetPeer peer)
 {
     if (null != _lastConnection)
     {
         _lastConnection.RealTimePeer = peer;
     }
 }
Example #2
0
        public void Connect(string ip, int port, long connId)
        {
            _netClient = new NetManager(_listener);
            //取消超时机制,使用TCP的生命周期
            _netClient.DisconnectTimeout = int.MaxValue;

            _netClient.Start();
            var peer = _netClient.Connect(ip, port, "", connId);

            if (null == peer)
            {
                Logger.ErrorFormat("lite net client connect failed , ip {0} port {1}", ip, port);
                if (null != OnConnectFailedListener)
                {
                    OnConnectFailedListener(_peer);
                }
                return;
            }
            _peer = new LiteNetPeer(peer);
            _listener.NetworkReceiveEvent   += OnNetworkReceive;
            _listener.PeerDisconnectedEvent += OnDisconnected;
            if (null != OnConnectListener)
            {
                OnConnectListener(_peer);
            }

            IsConnected = true;
        }
Example #3
0
 public void OnDisconnect(IVNetPeer peer)
 {
     try
     {
         if (this._socket != null)
         {
             this._socket.Shutdown(SocketShutdown.Both);
         }
     }
     catch (Exception ex)
     {
         Logger.ErrorFormat("Shutdown failed with error {0}", ex.Message);
     }
     try
     {
         if (this._socket != null)
         {
             this._socket.Close();
         }
     }
     catch (Exception ex)
     {
         Logger.ErrorFormat("Close failed with error {0}", ex.Message);
     }
     this._socket = null;
     if (null != OnDisconnectListener)
     {
         OnDisconnectListener(peer);
     }
 }
Example #4
0
 public void OnDisconnect(IVNetPeer peer)
 {
     _socket.Close();
     if (null != OnDisconnectListener)
     {
         OnDisconnectListener(peer);
     }
 }
Example #5
0
        /// <summary>
        /// 每个非可靠包里附带相关的Tcp的连接ID
        /// </summary>
        /// <param name="peer"></param>
        /// <param name="stream"></param>
        /// <returns></returns>
        protected virtual AbstractNetowrkChannel GetChannel(IVNetPeer peer, MemoryStream stream)
        {
            var             connid = BitConverter.ToInt32(stream.GetBuffer(), 0);
            VNetworkChannel channel;

            if (Connections.TryGetValue(connid, out channel))
            {
                return(channel);
            }
            return(null);
        }
Example #6
0
        protected void OnRealTimeConnected(IVNetPeer peer)
        {
            VNetworkChannel channel;

            if (Connections.TryGetValue(peer.ConnectId, out channel))
            {
                channel.RealTimePeer = peer;
            }
            else
            {
                Logger.ErrorFormat("Illegal connect id : {0}", peer.ConnectId);
            }
        }
Example #7
0
 private void OnDisconnected(IVNetPeer peer)
 {
     lock (_connections)
     {
         if (_connections.ContainsKey(peer.ConnectId))
         {
             _connections.Remove(peer.ConnectId);
         }
         if (null != OnDisconnectListener)
         {
             OnDisconnectListener(peer);
         }
     }
 }
Example #8
0
        public void OnReliableReceive(IVNetPeer conn, MemoryStream stream)
        {
            var packet = VNetPacketMemSteam.Allocate();

            packet.CopyFrom(stream.GetBuffer(), 0, (int)stream.Length);
            VNetworkChannel channel;

            if (Connections.TryGetValue(conn.ConnectId, out channel))
            {
                channel.AddToDeserializeQueue(packet);
            }
            channel.FlowRecv(true, packet.Length);
            packet.ReleaseReference();
            if (null != OnReliableReceivedListener)
            {
                OnReliableReceivedListener(conn);
            }
        }
Example #9
0
 protected virtual void OnDisconnect(IVNetPeer conn)
 {
     if (Connections.ContainsKey(conn.ConnectId))
     {
         var channel = Connections[conn.ConnectId];
         if (null != ChannelDisconnected)
         {
             ChannelDisconnected(channel);
         }
         Connections[conn.ConnectId].OnDisconnect();
         Connections.Remove(conn.ConnectId);
         RemoveChannel(channel);
     }
     else
     {
         Logger.ErrorFormat("ConnectId {0} doesn't exist ", conn.ConnectId);
     }
 }
Example #10
0
        public virtual void OnReliableConnected(IVNetPeer peer)
        {
            var channel = new VNetworkChannel(peer, LittleEndian);

            channel.OnReliableConnected();
            if (Connections.ContainsKey(peer.ConnectId))
            {
                Logger.ErrorFormat("Connid {0} does not exist in connections ", peer.ConnectId);
                return;
            }
            Connections[peer.ConnectId] = channel;
            _lastConnection             = channel;
            AddChannel(channel);
            if (null != ChannelConnected)
            {
                ChannelConnected(channel);
            }
            OnChannelConnected(channel);
        }
Example #11
0
        public void OnRealTimeReceive(IVNetPeer peer, MemoryStream stream)
        {
            if (null != OnRealTimeReceiveListener)
            {
                OnRealTimeReceiveListener(peer, stream);
            }
            var channel = GetChannel(peer, stream);
            var length  = (int)stream.Length - 4;

            if (null == channel || length < 0)
            {
                return;
            }
            var packet = VNetPacketMemSteam.Allocate();

            packet.CopyFrom(stream.GetBuffer(), 4, length);
            channel.AddToDeserializeQueue(packet);
            channel.FlowRecv(false, stream.Length);
            packet.ReleaseReference();
        }
Example #12
0
 public VNetworkChannel(IVNetPeer connection, bool littleEndian)
 {
     RealiableConn = connection;
     LittleEndian  = littleEndian;
 }
Example #13
0
 protected override AbstractNetowrkChannel GetChannel(IVNetPeer peer, MemoryStream stream)
 {
     return(_lastConnection);
 }
Example #14
0
 protected void OnRealTimeDisconnect(IVNetPeer peer)
 {
     // 取消了超时逻辑,依赖tcp连接
 }