Beispiel #1
0
        public async void Connect(string host, int port)
        {
            try
            {
                var endpoint = IPAddress.Parse(host);
                mSocket = new Socket(endpoint.AddressFamily, SocketType.Dgram, ProtocolType.Udp);
                mSocket.Connect(endpoint, port);
                mSocket.BeginConnect(endpoint, port, ConnectCallback, mSocket);
                RemoteAddress = (IPEndPoint)mSocket.RemoteEndPoint;
                LocalAddress  = (IPEndPoint)mSocket.LocalEndPoint;
                mKCP          = new KCP((uint)(new Random().Next(1, Int32.MaxValue)), rawSend);
                // normal:  0, 40, 2, 1
                // fast:    0, 30, 2, 1
                // fast2:   1, 20, 2, 1
                // fast3:   1, 10, 2, 1
                mKCP.NoDelay(1, 20, 2, 1);
                mKCP.SetStreamMode(true);
                mRecvBuffer.Clear();


                _tokenSourceReceiver = new CancellationTokenSource();

                await Receive();
            }
            catch (Exception ex)
            {
                await CloseAsync();

                OnError(ex.ToString());
            }
        }
Beispiel #2
0
        public async void StartClient(string host, int port)
        {
            Uri gameServerUri = new Uri(host);

            IPHostEntry hostEntry = Dns.GetHostEntry(gameServerUri.Host);

            if (hostEntry.AddressList.Length == 0)
            {
                throw new Exception("Unable to resolve host: " + gameServerUri.Host);
            }
            var endpoint = hostEntry.AddressList[0];

            try
            {
                this.listener = new System.Net.Sockets.Socket(endpoint.AddressFamily, SocketType.Dgram, ProtocolType.Udp);
                this.listener.BeginConnect(endpoint, port, this.OnConnectCallback, this.listener);
                //this.connected.WaitOne();
                RemoteAddress = (IPEndPoint)this.listener.RemoteEndPoint;
                LocalAddress  = (IPEndPoint)this.listener.LocalEndPoint;

                mKCP = new KCP((uint)(new Random().Next(1, Int32.MaxValue)), Send);
                // normal:  0, 40, 2, 1
                // fast:    0, 30, 2, 1
                // fast2:   1, 20, 2, 1
                // fast3:   1, 10, 2, 1
                mKCP.NoDelay(1, 10, 2, 1);
                mKCP.WndSize(128, 128);
                mKCP.SetStreamMode(true);
                mRecvBuffer.Clear();

                _tokenSourceReceiver = new CancellationTokenSource();


                await Receive();

                var connectedHandler = this.Connected;

                if (connectedHandler != null)
                {
                    connectedHandler(this);
                }
            }
            catch (Exception ex)//SocketException
            {
                await CloseAsync();

                OnError(ex.ToString());
            }
        }
Beispiel #3
0
            internal void reset()
            {
                conv     = 0;
                cmd      = 0;
                frg      = 0;
                wnd      = 0;
                ts       = 0;
                sn       = 0;
                una      = 0;
                rto      = 0;
                xmit     = 0;
                resendts = 0;
                fastack  = 0;
                acked    = 0;

                data.Clear();
                data.Dispose();
                data = null;
            }