private static void AddIps(UdpItem item, UdpListener udp, ulong time) { UdpPacketReader packet = new UdpPacketReader(item.Data); ushort port = packet; UdpNode node = UdpNodeManager.Find(x => x.IP.Equals(((IPEndPoint)item.EndPoint).Address)); if (node != null) { node.Port = port; } else { UdpNodeManager.Add(item.EndPoint); } while (packet.Remaining > 5) { UdpNode n = new UdpNode(); n.IP = packet; n.Port = packet; UdpNodeManager.Add(n); } udp.SendDatagram(new UdpItem { Data = UdpOutbound.AckIps(((IPEndPoint)item.EndPoint).Address, time), EndPoint = item.EndPoint, Msg = UdpMsg.OP_SERVERLIST_ACKIPS }); }
private static void CheckFirewallBusy(UdpItem item, UdpListener udp, ulong time) { UdpPacketReader packet = new UdpPacketReader(item.Data); ushort port = packet; while (packet.Remaining > 5) { UdpNode n = new UdpNode(); n.IP = packet; n.Port = packet; UdpNodeManager.Add(n); } }
private static void AckIps(UdpItem item, UdpListener udp, ulong time) { UdpStats.ACKIPS++; UdpPacketReader packet = new UdpPacketReader(item.Data); ushort port = packet; UdpNode node = UdpNodeManager.Find(x => x.IP.Equals(((IPEndPoint)item.EndPoint).Address)); if (node != null) { node.Port = port; node.Ack++; node.LastConnect = time; node.Try = 0; } while (packet.Remaining > 5) { UdpNode n = new UdpNode(); n.IP = packet; n.Port = packet; UdpNodeManager.Add(n); } }