//public GameServer(IListener listener, ISystemSettings sysSettings, IRoomFabric RoomFabric = null, IServerEngineFabric EngineFabric = null) public GameServer(IIpEPprovider ipEpProvider, ISystemSettings sysSettings, IRoomFabric RoomFabric = null, IServerEngineFabric EngineFabric = null) { _sys_settings = sysSettings; _next_room_port = sysSettings.RoomPortMin; ServerListner = new Listener(ipEpProvider, sysSettings.HostListeningPort); RegisterListener(ServerListner); if (RoomFabric != null) { _roomFabric = RoomFabric; } else { _roomFabric = new RoomFabric(); } if (EngineFabric != null) { _engineFabric = EngineFabric; } else { _engineFabric = new ServerEngineFabric(); } }
public Listener(IIpEPprovider ipEPprovider, Int32 Port) { IPHostEntry HostEntry = Dns.GetHostEntry(Dns.GetHostName()); //IPAddress ipv4Addr = HostEntry.AddressList[2]; //IPAddress ipv6Addr = HostEntry.AddressList[0]; //IPEndPoint ipv4EP = new IPEndPoint(ipv4Addr, Port); //IPEndPoint ipv6EP = new IPEndPoint(ipv6Addr, Port); IPEndPoint ipv4EP = ipEPprovider.CreateIPEndPoint(AddressFamily.InterNetwork, Port); IPEndPoint ipv6EP = ipEPprovider.CreateIPEndPoint(AddressFamily.InterNetworkV6, Port); if (ipv4EP != null) { ipv4_listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); ipv4_listener.Bind(ipv4EP); } if (ipv6EP != null) { ipv6_listener = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp); ipv6_listener.Bind(ipv6EP); } }