using System.Collections.Generic; using UnityEngine; using System; using System.Net; using System.Net.Sockets; namespace NeonTea.Quakeball.Net.Endpoint { public class Server : AbstractEndpoint { public override UdpClient UdpClient { get { return InnerClient; } } private static uint ConnectionUUIDCounter; private Dictionary Connections = new Dictionary(); private UdpClient InnerClient; public override void Start(string host, int port) { InnerClient = new UdpClient(port); Connection conn; try { conn = AddConnection(new IPEndPoint(FindAddress(host), port), uint.MaxValue); } catch (Exception e) { Debug.Log($"Failed to create initial connection: {e.ToString()}"); Network.Singleton.Stop(); return; } StartListen(conn); Debug.Log($"Server started at {host}:{port}!"); } private Connection AddConnection(IPEndPoint endpoint, uint uuid = 0) { if (uuid == 0) { uuid = ConnectionUUIDCounter++; } Connection conn = new Connection(endpoint, uuid); Connections.Add(uuid, conn); return conn; } } }