private void Push(ulong time) { UdpNode node = UdpNodeManager.NextPusher(time); if (node != null) { this.SendDatagram(new UdpItem { Data = UdpOutbound.AddIps(node.IP, time), EndPoint = node.EndPoint, Msg = UdpMsg.OP_SERVERLIST_ADDIPS }); } }
private static void LoadDefaultList() { Nodes = new List <UdpNode>(); using (FileStream fs = new FileStream("servers.dat", FileMode.Open, FileAccess.Read)) { byte[] buffer = new byte[6]; while (fs.Read(buffer, 0, buffer.Length) == 6) { UdpNode node = new UdpNode(); node.IP = new IPAddress(buffer.Take(4).ToArray()); node.Port = BitConverter.ToUInt16(buffer.ToArray(), 4); Nodes.Add(node); } } ServerCore.Log("default node list loaded"); }
public static void Add(UdpNode server) { if (!server.IP.Equals(Settings.ExternalIP)) { UdpNode sobj = Nodes.Find(s => s.IP.Equals(server.IP)); if (sobj != null) { sobj.Port = server.Port; } else { if (Nodes.Count > 4000) { Nodes.Sort((x, y) => x.LastConnect.CompareTo(y.LastConnect)); Nodes.RemoveRange(0, 250); } Nodes.Add(server); } } }
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); } }
public UdpChannelItem(UdpNode addr) { this.IP = addr.IP; this.Port = addr.Port; }