static void NewLink(KcpUser linker, DataBuffer data) { byte[] dat = data.fakeStruct.GetData <byte[]>(Req.Args); if (dat != null) { var link = KcpPack.UnPackMsg <LinkInfo>(dat); if (link != null) { new IPAddress(link.ip.ToBytes()); IPEndPoint endPoint = new IPEndPoint(new IPAddress(link.ip.ToBytes()), link.port); KcpServer.Instance.Send(new byte[1], EnvelopeType.Mate, endPoint); } } }
void MessagePro(DataBuffer data) { switch (data.fakeStruct[Req.Cmd]) { case ProCmd.ServerIp: byte[] dat = data.fakeStruct.GetData <byte[]>(Req.Args); var rs = KcpPack.UnPackMsg <ServerInfo>(dat); if (rs != null) { link.Redirect(rs.ip, rs.port); link.SendNull(DefCmd.heart, MessageType.Def); } break; } }
static void RedirectServer(KcpUser linker, DataBuffer data) { try { byte[] dat = data.fakeStruct.GetData <byte[]>(Req.Args); var rs = KcpPack.UnPackMsg <RServer>(dat); if (rs != null) { if (rs.key == key) { ServerTable.AddServer(linker.ip, linker.port, rs.name); } } } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } }
static void Main(string[] args) { KcpServer.CreateLink = (o) => { return(new KcpUser(o)); }; var kcp = new KcpServer(8888); kcp.OpenHeart(); RServer rs = new RServer(); rs.name = "斗地主"; rs.key = "ert125dsaqwqf43bvrwurx24354tq245sd32dfkh348shdjfhs234sf5345"; IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("193.112.70.170"), 6666); kcp.Send(KcpPack.PackObject <RServer>(ProCmd.Server, MessageType.Pro, rs), EnvelopeType.AesDataBuffer, endPoint); while (true) { var cmd = Console.ReadLine(); if (cmd == "close" | cmd == "Close") { break; } } }
public void SendObject <T>(Int32 cmd, Int32 type, object obj) where T : class { var buf = KcpPack.PackObject <T>(cmd, type, obj); Send(buf, EnvelopeType.AesDataBuffer); }
public void SendStruct <T>(Int32 cmd, Int32 type, T obj) where T : unmanaged { var buf = KcpPack.PackStruct <T>(cmd, type, obj); Send(buf, EnvelopeType.AesDataBuffer); }
public void SendNull(Int32 cmd, Int32 type) { var buf = KcpPack.PackNull(cmd, type); Send(buf, EnvelopeType.AesDataBuffer); }