public void Dispose() { if (this.kcpsocket != null) { this.kcpsocket.Close(); this.kcpsocket = null; this.msgQueue.Clear(); this.ping = null; } }
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); }
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); } }
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); } }