public override bool Connect(string ip, int port, uint conv)
    {
        try
        {
            _connected = false;
            _socket    = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            _socket.Connect(ip, port);
            _kcp = new KCP(conv, HandleKcpSend);
            _kcp.SetMtu(KCP.IKCP_MTU_DEF - KCPDatagram.CMD_SIZE);
            _kcp.SetInterval(1);
            _kcp.WndSize(512, 512);
            _kcp.NoDelay(2, 10, 2, 1);
            _connected = true;
            _conv      = conv;
            _socket.BeginReceive(_buffer, 0, _maxBufferSize, SocketFlags.None,
                                 new AsyncCallback(OnReceive), _socket);
        }
        catch (Exception e)
        {
            Console.WriteLine("connect failed: " + e);
            _connected = false;
        }

        // clear message queue
        lock (_queue) {
            _queue.Clear();
        }

        return(_connected);
    }
Beispiel #2
0
    /// <summary>
    /// 初始化kcp
    /// </summary>
    /// <param name="conv"></param>
    void init_kcp(UInt32 conv)
    {
        m_Kcp = new KCP(conv, null);
        m_Kcp.SetOutput((byte[] buf, int size, object user) =>
        {
            //UnityEngine.Main.Debug("send:" + size);
            try
            {
                //UnityEngine.Debug.Log("kcp send:" + size);
                socket.SendTo(buf, 0, size, SocketFlags.None, srvIpEnd);
                if (index == 2)
                {
                    index = 1;
                }
            }
            catch (Exception ex)
            {
                //Main.Debug("send errror:" + ex.ToString());
                NetError();
            }
        });

        m_Kcp.NoDelay(1, 10, 2, 1);
        m_Kcp.WndSize(128, 128);
    }
Beispiel #3
0
        private void init_kcp(UInt32 conv)
        {
            mKcp = new KCP(conv, (byte[] buf, int size) => {
                RawSend(buf, size);
            });

            // fast mode.
            mKcp.NoDelay(1, 10, 2, 1);
            mKcp.WndSize(128, 128);
        }
        public FSPSession(uint sid, Action <IPEndPoint, byte[], int> senderAction)
        {
            sessionID = sid;
            sender    = senderAction;

            kcp = new KCP(sid, HandleKcpSend);
            kcp.NoDelay(1, 10, 2, 1);
            kcp.WndSize(128, 128);
            active = true;
        }
        public KCPSession(uint sid, Action <ISession, byte[], int> sender, ISessionListener listener)
        {
            m_id       = sid;
            m_sender   = sender;
            m_listener = listener;

            m_Kcp = new KCP(sid, HandleKcpSend);
            m_Kcp.NoDelay(1, 10, 2, 1);
            m_Kcp.WndSize(128, 128);
        }
 public ASynServerKcp(UInt32 conv_, UdpClient socket, IPEndPoint ep, Action <byte[], ASynServerKcp> recHandler)
 {
     _socket     = socket;
     _recHandler = recHandler;
     _remoteEP   = new IPEndPoint(new IPAddress(ep.Address.GetAddressBytes()), ep.Port);
     _kcp        = new KCP(conv_, KcpOutput);
     // fast mode.
     _kcp.NoDelay(1, 10, 2, 1);
     _kcp.WndSize(128, 128);
 }
Beispiel #7
0
 void initKCP(UInt32 conv)
 {
     mKcp = new KCP(conv, (byte[] buf, int size) =>
     {
         KCPOutput(this, buf, size);
     });
     // fast mode.
     mKcp.NoDelay(1, 10, 2, 1);
     mKcp.WndSize(128, 128);
 }
Beispiel #8
0
        /// <summary>
        /// 初始化Kcp
        /// </summary>
        /// <param name="conv">会话</param>
        private void InitKcp(uint conv)
        {
            kcp = new KCP(conv, (buf, size) =>
            {
                client.Send(buf, size);
            });

            kcp.NoDelay(NoDelay ? 1 : 0, IntervalTimer, Resend, CongestionControl ? 1 : 0);
            kcp.WndSize(SendWindow, RecvWindow);
        }
Beispiel #9
0
        /// <summary>
        /// 初始化Kcp
        /// </summary>
        /// <param name="conv">会话</param>
        private void InitKcp(uint conv)
        {
            kcp = new KCP(conv, (buf, size) =>
            {
                client.Send(buf, size, remoteEndPoint);
            });

            kcp.NoDelay(1, 1, 2, 1);
            kcp.WndSize(256, 256);
        }
Beispiel #10
0
        /// <summary>
        /// 初始化Kcp
        /// </summary>
        /// <param name="conv">会话</param>
        private void InitKcp(uint conv)
        {
            kcp = new KCP(conv, (buf, size) =>
            {
                server.SendTo(buf, 0, size, SocketFlags.None, remote);
            });

            kcp.NoDelay(1, 10, 2, 1);
            kcp.WndSize(128, 128);
        }
Beispiel #11
0
        public KCPSession(uint sid, Action <ISession, byte[], int> sender, ISessionListener listener)
        {
            sessionId     = sid;
            senderAction  = sender;
            this.listener = listener;

            kcp = new KCP(sid, HandleKcpSend);
            kcp.NoDelay(1, 10, 2, 1);
            kcp.WndSize(128, 128);
        }
Beispiel #12
0
    void init_kcp(UInt32 conv)
    {
        m_Kcp = new KCP(conv, null);
        m_Kcp.SetOutput(SendAction);

        // fast mode.
        m_Kcp.NoDelay(1, 20, 2, 1);
        m_Kcp.WndSize(80, 80);
        m_Kcp.SetMinRTO(10);
        m_Kcp.SetFastResend(1);
    }
Beispiel #13
0
        //------------------------------------------------------------
        #region 构造相关
        public void Init(uint sid)
        {
            Debuger.Log("sid:{0}", sid);
            m_sid = sid;
            m_TempSendData.sid = sid;
            m_TempSendData.msgs.Add(new FSPMessage());

            m_Kcp = new KCP(m_sid, HandleKcpSend);
            m_Kcp.NoDelay(1, 10, 2, 1);
            m_Kcp.WndSize(128, 128);
        }
Beispiel #14
0
    void init_kcp(UInt32 conv)
    {
        mKcp = new KCP(conv, (byte[] buf, int size) =>
        {
            mUdpClient.Send(buf, size);
        });

        // fast mode.
        mKcp.NoDelay(1, 10, 2, 1);
        mKcp.WndSize(256, 256);
    }
Beispiel #15
0
        void init_kcp(UInt32 conv)
        {
            mKcp = new KCP(conv, (byte[] buf, int size) =>
            {
                mUdpClient.Send(buf, size);
            });

            // fast mode.
            mKcp.NoDelay(1, 10, 2, 1);
            mKcp.WndSize(128, 128);
        }
Beispiel #16
0
        public FSPSession(uint sid, Action <IPEndPoint, byte[], int> sender)
        {
            Debuger.Log();
            m_id     = sid;
            m_sender = sender;

            m_Kcp = new KCP(sid, HandleKcpSend);
            m_Kcp.NoDelay(1, 10, 2, 1);
            m_Kcp.WndSize(128, 128);

            m_active = true;
        }
Beispiel #17
0
    void init_kcp(UInt32 conv)
    {
        conv = 1;
        mKcp = new KCP(conv, (byte[] buf, int size) =>
        {
            base.Send(buf, 0, buf.Length);
        });

        // fast mode.
        mKcp.NoDelay(1, 10, 2, 1);
        mKcp.WndSize(128, 128);
    }
Beispiel #18
0
    void init_kcp(UInt32 conv)
    {
        m_Kcp = new KCP(conv, null);
        m_Kcp.SetOutput((byte[] buf, int size, object user) =>
        {
            m_KCPServer.Send(this, buf, size);
        });

        // fast mode.
        m_Kcp.NoDelay(1, 20, 2, 1);
        m_Kcp.WndSize(128, 128);
    }
Beispiel #19
0
 public void Init(uint sessionid)
 {
     sessionID              = sessionid;
     sendBufferTemp         = new byte[4096];
     recvBufferTemp         = new byte[4096];
     tempSendData           = new FSPDataCToS();
     recvBuffQueue          = new SwitchQueue <byte[]>();
     tempSendData.sessionID = sessionid;
     tempSendData.msg       = new FSPMessage();
     kcp = new KCP(sessionid, HandleKcpSend);
     kcp.NoDelay(1, 10, 2, 1);
     kcp.WndSize(128, 128);
 }
Beispiel #20
0
        //======================================================================
        //连接与断开连接相关
        //======================================================================
        public void Active(Socket socket, IPEndPoint remoteEndPoint)
        {
            RemoteEndPoint = (IPEndPoint)remoteEndPoint;

            if (Interlocked.CompareExchange(ref this.m_actived, 1, 0) == 0)
            {
                m_socket = socket;

                LocalEndPoint = (IPEndPoint)socket.LocalEndPoint;

                m_Kcp = new KCP(Id, HandleKcpSend);
                m_Kcp.NoDelay(1, 10, 2, 1);
                m_Kcp.WndSize(128, 128);
            }
        }
Beispiel #21
0
        private KCPNet() : base()
        {
            mNetTag   = "KCP";
            kcpObject = new KCP(1, HandleKcpSend);
            kcpObject.NoDelay(1, 10, 2, 1);
            kcpObject.WndSize(128, 128);
            sendCallBack = SendAsyncCallback;

            for (int i = 0; i < 60; i++)
            {
                cacheBytesQue.Enqueue(new CacheByteObject()
                {
                    bytes = new byte[cacheByteLen]
                });
            }
        }
    void init_kcp(UInt32 conv)
    {
        mKcp = new KCP(conv, (byte[] buf, int size) =>
        {
            try
            {
                mUdpClient.Send(buf, size);
            }catch(Exception e)
            {
                Debug.LogError(e);
            }
        });

        mKcp.NoDelay(1, 10, 2, 1);
        mKcp.WndSize(128, 128);
    }
Beispiel #23
0
    public static bool Connect(int port, int playerId)
    {
        if (Connected)
        {
            return(false);
        }

        Client = new UdpClient(TcpClientProxy.server.Address.ToString(), port);
        Kcp    = new KCP((uint)playerId, SendWrap);
        Kcp.NoDelay(1, 10, 2, 1);
        Kcp.WndSize(128, 128);
        Receive();
        UpdateTime = 0;
        Connected  = true;
        return(true);
    }
Beispiel #24
0
        public void Initialize(object user, KCPSetting setting)
        {
            _kcp = new KCP(setting.conv, user);
            _kcp.SetOutput(OutputKCP);

            // fast mode
            _kcp.NoDelay(setting.nodelay,
                         setting.interval,
                         setting.resend,
                         setting.nc);

            _kcp.WndSize(setting.sndwnd,
                         setting.rcvwnd);

            _recvTimeoutSec = setting.timeoutSec;
            kcpRcvBuf       = new byte[(KCP.IKCP_MTU_DEF + KCP.IKCP_OVERHEAD) * 3];
        }
Beispiel #25
0
 private void createSocket(int conv, string host, int port)
 {
     _remoteEP = new IPEndPoint(IPAddress.Parse(host), port);
     _listenEP = new IPEndPoint(IPAddress.Any, port);
     // 主要一定要设置port为0,不然无法接收到服务器的消息
     _socket = new UdpClient(0);
     _socket.Connect(_remoteEP);
     _kcp = new KCP((uint)conv, (byte[] buf, int size) =>
     {
         //Log4U.LogDebug("ASynKcpUdpClientSocket:createSocket Message send data=", Encoding.ASCII.GetString(buf, 0, size));
         _socket.Send(buf, size);
     });
     // fast mode.
     _kcp.NoDelay(1, 10, 2, 1);
     _kcp.WndSize(128, 128);
     _socket.BeginReceive(ReceiveAsyn, this);
 }
 public void Connect(string ip, int port)
 {
     Debuger.Log("连接服务端 IP {0} Port {1} ", ip, port);
     IP            = ip;
     remoteIp      = ip;
     remotePort    = port;
     remotEndPoint = IPUtility.GetHostEndPoint(ip, port);
     currentSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
     currentSocket.Bind(new IPEndPoint(IPAddress.Any, Port));
     kcp = new KCP(0, HandleKcpSend);
     kcp.NoDelay(1, 10, 2, 1);
     kcp.WndSize(128, 128);
     Connected  = true;
     threadRecv = new Thread(ThreadRecv)
     {
         IsBackground = true
     };
     threadRecv.Start();
 }
Beispiel #27
0
        public KcpChannel(int port, Action <byte[]> reveiveHandler)
        {
            _recEndPoint = new IPEndPoint(IPAddress.Any, 0);

            _reveiveHandler = reveiveHandler;

            _udpClient = new UdpClient(new IPEndPoint(IPAddress.Any, port));
            _kcp       = new KCP((UInt32) new Random((int)DateTime.Now.Ticks).Next(1, Int32.MaxValue),
                                 UdpSendData);

            //kcp fast mode.
            _kcp.NoDelay(1, 10, 2, 1);
            _kcp.WndSize(128, 128);

            _receiveMeesages = new Queue <byte[]>();

            _udpClient.BeginReceive(UdpReceiveMessage, this);

            new Task(Update).Start();
        }
Beispiel #28
0
        void init_kcp(UInt32 conv)
        {
            mKcp = new KCP(conv, (byte[] buf, int size) =>
            {
                try
                {
                    mUdpClient.Send(buf, size);
                }
                catch (Exception e)
                {
                    // itfantasy added
                    if (this.errHandler != null)
                    {
                        this.errHandler.Invoke(e.Message);
                    }
                }
            });

            // fast mode.
            mKcp.NoDelay(1, 10, 2, 1);
            mKcp.WndSize(128, 128);
        }
Beispiel #29
0
        public void Connect(string ip, int port)
        {
            Debuger.Log("ip:{0}, port:{1}", ip, port);
            m_ip             = ip;
            m_port           = port;
            m_RemoteEndPoint = IPUtils.GetHostEndPoint(ip, port);

            m_SystemSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            m_SystemSocket.Bind(new IPEndPoint(IPAddress.Any, bindPort));

            m_Kcp = new KCP(0, HandleKcpSend);
            m_Kcp.NoDelay(1, 10, 2, 1);
            m_Kcp.WndSize(128, 128);

            Connected = true;

            m_ThreadRecv = new Thread(Thread_Recv)
            {
                IsBackground = true
            };
            m_ThreadRecv.Start();
        }
Beispiel #30
0
        public KcpChannel(string ip, int port, Action <byte[]> reveiveHandler)
        {
            _allEndPoint = new IPEndPoint(IPAddress.Parse("255.255.255.255"), port);
            _recEndPoint = new IPEndPoint(IPAddress.Any, 0);

            _reveiveHandler = reveiveHandler;

            _udpClient = new UdpClient(new IPEndPoint(IPAddress.Parse(ip), port));
            _kcp       = new KCP((UInt32) new Random((int)DateTime.Now.Ticks).Next(1, Int32.MaxValue),
                                 UdpSendData);

            //kcp fast mode.
            _kcp.NoDelay(1, 10, 2, 1);
            _kcp.WndSize(128, 128);

            _receiveMeesages = new Queue <byte[]>();

            Thread revThread = new Thread(ReceiveMessage);

            revThread.Start();
            Thread updataThread = new Thread(Update);

            updataThread.Start();
        }
Beispiel #31
0
        void Start()
        {
            kcpObject = new KCP(1, HandleKcpSend);
            kcpObject.NoDelay(1, 10, 2, 1);
            kcpObject.WndSize(128, 128);

            IPAddress tip = IPAddress.Parse("127.0.0.1");

            //var mTargetPoint = new IPEndPoint(tip, 200236);
            testServer = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

            mRecPoint = new IPEndPoint(IPAddress.Any, mLocalPort);
            IPEndPoint tMypoint = new IPEndPoint(IPAddress.Any, mLocalPort);

            testServer.Bind(tMypoint);

            taskStart = true;
            recTask   = Task.Run(RecThread);

            Application.runInBackground = true;

            tetstdata.AddInt(3);
            Debug.Log("测试KCP服务器启动");
        }