private void OnRealTimeConnect(IVNetPeer peer) { if (null != _lastConnection) { _lastConnection.RealTimePeer = peer; } }
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; }
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); } }
public void OnDisconnect(IVNetPeer peer) { _socket.Close(); if (null != OnDisconnectListener) { OnDisconnectListener(peer); } }
/// <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); }
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); } }
private void OnDisconnected(IVNetPeer peer) { lock (_connections) { if (_connections.ContainsKey(peer.ConnectId)) { _connections.Remove(peer.ConnectId); } if (null != OnDisconnectListener) { OnDisconnectListener(peer); } } }
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); } }
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); } }
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); }
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(); }
public VNetworkChannel(IVNetPeer connection, bool littleEndian) { RealiableConn = connection; LittleEndian = littleEndian; }
protected override AbstractNetowrkChannel GetChannel(IVNetPeer peer, MemoryStream stream) { return(_lastConnection); }
protected void OnRealTimeDisconnect(IVNetPeer peer) { // 取消了超时逻辑,依赖tcp连接 }