Exemplo n.º 1
0
        public void Send(KcpNetPack pack)
        {
            _sendIdx++;
            var fsdata = pack.Assembly();

            _sendPacks.Add(_sendIdx, fsdata.Bytes);
            RcpPackSendData(_sendIdx, _range);
            SetHadCheck("Send");
        }
Exemplo n.º 2
0
        public void SocketSend(KcpNetPack pack)
        {
            if (!isConnected || isConnectting)
            {
                return;
            }
            var data = pack.Assembly();

            socket.SendTo(data.Bytes, data.Length, SocketFlags.None, ipEnd);
            _lastSendTime = System.Environment.TickCount;
        }
Exemplo n.º 3
0
 public void OnUpdate()
 {
     if (isConnectting)
     {
         if (System.Environment.TickCount - _lastCheckFailTime > (CONNECTED_FAIL_TIME * (_tryConnectTime + 1)))
         {
             _tryConnectTime++;
             if (_tryConnectTime < MAX_CONNECT_TIME)
             {
                 ConnectReceiveThread_Stop();//必须先关接收数据线程,再开.不然无法接收数据(待不需要关线程方案)
                 Kcp_Connect msg = new Kcp_Connect();
                 msg.Quickconnect = _quickConnect;
                 KcpNetPack pack = KcpNetPack.SerializeToPack(msg, (ushort)Kcp_MsgID.Connected);
                 SetHadCheck("ReConnect");
                 var data = pack.Assembly();
                 socket.SendTo(data.Bytes, data.Length, SocketFlags.None, ipEnd);
                 _lastCheckFailTime = System.Environment.TickCount;
                 Debug.LogErrorFormat("[链接失败]第{0}次尝试重新连接", _tryConnectTime);
                 ConnectReceiveThread_Start();
             }
             else
             {
                 lock (netEventList)
                 {
                     netEventList.Enqueue(NetworkEvent.connectFail);
                 }
                 Debug.LogErrorFormat("[失败]第{0}次连接", _tryConnectTime);
                 isConnectting   = false;
                 _tryConnectTime = 0;
             }
         }
     }
     lock (netEventList)
     {
         while (netEventList.Count > 0)
         {
             var e = netEventList.Dequeue();
             listener.OnEvent(e);
         }
     }
     Check();
 }
Exemplo n.º 4
0
        public void ConnectKCP(string host, int iport)
        {
            mHUDFPS = Facade.Instance.GetManager <HUDFPS>(FacadeConfig.ChildSystem_HUDFPS);
            _range  = BASE_DATA_CACHE;
            ipEnd   = new IPEndPoint(IPAddress.Parse(host), iport);
            socket  = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            //socket.Connect(ipEnd);
            IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);

            serverEnd = (EndPoint)sender;
            Kcp_Connect msg = new Kcp_Connect();

            msg.Quickconnect = _quickConnect;
            KcpNetPack pack = KcpNetPack.SerializeToPack(msg, (ushort)Kcp_MsgID.Connected);

            SetHadCheck("Connect");
            var data = pack.Assembly();

            socket.SendTo(data.Bytes, data.Length, SocketFlags.None, ipEnd);
            isConnectting      = true;
            isConnected        = false;
            _lastCheckFailTime = System.Environment.TickCount;
            ConnectReceiveThread_Start();
        }