コード例 #1
0
ファイル: KcpNetWorker.cs プロジェクト: itfantasy/gun
 public void Dispose()
 {
     if (this.kcpsocket != null)
     {
         this.kcpsocket.Close();
         this.kcpsocket = null;
         this.msgQueue.Clear();
         this.ping = null;
     }
 }
コード例 #2
0
ファイル: KcpNetWorker.cs プロジェクト: itfantasy/gun
        public void Connect(string url)
        {
            this.Dispose();

            string urlInfo = url.TrimStart(("kcp://").ToCharArray());

            string[] infos = urlInfo.Split(':');

#if KCP_v1
            this.kcpsocket = new KcpProject.v1.UdpSocket((KcpProject.v1.UdpSocket.cliEvent ev, byte[] buf, string err) =>
            {
                switch (ev)
                {
                case KcpProject.v1.UdpSocket.cliEvent.Connected:
                    this.eventListener.OnConn();
                    break;

                case KcpProject.v1.UdpSocket.cliEvent.ConnectFailed:
                    this.OnError(errors.New(err));
                    break;

                case KcpProject.v1.UdpSocket.cliEvent.Disconnect:
                    this.OnError(errors.New(err));
                    break;

                case KcpProject.v1.UdpSocket.cliEvent.RcvMsg:
                    this.OnReceive(buf);
                    break;
                }
            });
#else // KCP_v2
            this.kcpsocket = new KcpProject.v2.UdpSocket((byte[] buf) => {
                this.OnReceive(buf);
            }, (err) => {
                this.OnError(errors.New(err));
            });
#endif
            this.kcpsocket.Connect(infos[0], ushort.Parse(infos[1]));
            this.doHandShake("");
#if KCP_v1
#else // KCP_v2
            this.eventListener.OnConn();
#endif
            this.ping = new AutoPing(this, this.eventListener);
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: mikawudi/kcptest
    static void test_v1(string host, UInt16 port)
    {
        var wait_response = true;

        KcpProject.v1.UdpSocket client = null;

        client = new KcpProject.v1.UdpSocket((KcpProject.v1.UdpSocket.cliEvent ev, byte[] buf, string err) =>
        {
            wait_response = false;

            switch (ev)
            {
            case KcpProject.v1.UdpSocket.cliEvent.Connected:
                Console.WriteLine("connected.");
                client.Send("Hello KCP.");
                break;

            case KcpProject.v1.UdpSocket.cliEvent.ConnectFailed:
                Console.WriteLine("connect failed. {0}", err);
                break;

            case KcpProject.v1.UdpSocket.cliEvent.Disconnect:
                Console.WriteLine("disconnect. {0}", err);
                break;

            case KcpProject.v1.UdpSocket.cliEvent.RcvMsg:
                Console.WriteLine("recv message: {0}", System.Text.ASCIIEncoding.ASCII.GetString(buf));
                break;
            }
        });

        client.Connect(host, port);

        while (wait_response)
        {
            client.Update();
            System.Threading.Thread.Sleep(10);
        }
    }
コード例 #4
0
ファイル: Program.cs プロジェクト: RainsSoft/kcp-csharp
    static void test_v1(string host, UInt16 port)
    {
        var wait_response = true;

        KcpProject.v1.UdpSocket client = null;

        client = new KcpProject.v1.UdpSocket((KcpProject.v1.UdpSocket.cliEvent ev, byte[] buf, string err) =>
        {
            wait_response = false;

            switch (ev)
            {
                case KcpProject.v1.UdpSocket.cliEvent.Connected:
                    Console.WriteLine("connected.");
                    client.Send("Hello KCP.");
                    break;
                case KcpProject.v1.UdpSocket.cliEvent.ConnectFailed:
                    Console.WriteLine("connect failed. {0}", err);
                    break;
                case KcpProject.v1.UdpSocket.cliEvent.Disconnect:
                    Console.WriteLine("disconnect. {0}", err);
                    break;
                case KcpProject.v1.UdpSocket.cliEvent.RcvMsg:
                    Console.WriteLine("recv message: {0}", System.Text.ASCIIEncoding.ASCII.GetString(buf) );
                    break;
            }
        });

        client.Connect(host, port);

        while (wait_response)
        {
            client.Update();
            System.Threading.Thread.Sleep(10);
        }
    }