Ejemplo n.º 1
0
            TPeerCnt _UnLinkCore()
            {
                if (_Key == null)
                {
                    return(TPeerCnt.MaxValue);
                }

                if (_Socket != null)
                {
                    _Socket.Close();
                    _Socket = null;
                }
                _RecvHeader    = null;
                _StreamSndTail = 0;
                _RecvPacketSeq = 0;
                _SendPacketSeq = 0;
                _StreamRcv.Clear();
                _StreamSnd.Clear();
                _LongIP         = 0;
                _Sending        = false;
                _Connected      = false;
                _ConnectTime    = 0;
                _ConnectTimeOut = 0;
                _Connecting     = false;

                var PeerNum = _Key.PeerNum;

                _Key = null;

                return(PeerNum);
            }
Ejemplo n.º 2
0
            // 유저 호출
            public bool Link(Socket Socket_, SIPPort IPPort_, SKey Key_, TEventHandler RecvEventHandler_, Int32 ConnectTimeOut_)
            {
                if (_Socket != null)
                {
                    return(false);
                }

                _RecvEvent            = new SocketAsyncEventArgs();
                _RecvEvent.Completed += new EventHandler <SocketAsyncEventArgs>(RecvEventHandler_);
                _SendEvent            = new SocketAsyncEventArgs();
                _SendEvent.Completed += new EventHandler <SocketAsyncEventArgs>(RecvEventHandler_);

                _Socket = Socket_;

                _RecvEvent.UserToken      = Key_;
                _RecvEvent.RemoteEndPoint = IPPort_.EndPoint;

                _Key    = Key_;
                _LongIP = IPPort_.IP;

                try
                {
                    if (!_Socket.ConnectAsync(_RecvEvent))  // _Worker 로 통보받을 필요 없음.
                    {
                        _HBRcvPeriod.NextLoose();
                        return(_Linked());
                    }
                    else
                    {
                        _Connecting     = true;
                        _ConnectTime    = Environment.TickCount;
                        _ConnectTimeOut = ConnectTimeOut_;
                    }
                }
                catch
                {
                    _LinkFailed();
                    return(false);
                }

                return(true);
            }
Ejemplo n.º 3
0
 public SIPPort(TLongIP IP_, TPort Port_) :
     base(IP_, Port_)
 {
 }