diff --git a/ZeroLevel/Services/Network/Contracts/IExchange.cs b/ZeroLevel/Services/Network/Contracts/IExchange.cs index 375f542..1480c9d 100644 --- a/ZeroLevel/Services/Network/Contracts/IExchange.cs +++ b/ZeroLevel/Services/Network/Contracts/IExchange.cs @@ -12,6 +12,9 @@ namespace ZeroLevel.Network IRouter UseHost(); IRouter UseHost(int port); + IRouter UseHostV6(); + IRouter UseHostV6(int port); + IRouter UseHost(IPEndPoint endpoint); IServiceRoutesStorage RoutesStorage { get; } diff --git a/ZeroLevel/Services/Network/Exchange.cs b/ZeroLevel/Services/Network/Exchange.cs index 9cd9d08..f9a24c7 100644 --- a/ZeroLevel/Services/Network/Exchange.cs +++ b/ZeroLevel/Services/Network/Exchange.cs @@ -633,6 +633,16 @@ namespace ZeroLevel.Network return MakeHost(new IPEndPoint(IPAddress.Any, port)); } + public IRouter UseHostV6() + { + return MakeHost(new IPEndPoint(IPAddress.IPv6Any, NetUtils.GetFreeTcpPort())); + } + + public IRouter UseHostV6(int port) + { + return MakeHost(new IPEndPoint(IPAddress.IPv6Any, port)); + } + public IRouter UseHost(IPEndPoint endpoint) { return MakeHost(endpoint); diff --git a/ZeroLevel/Services/Network/SocketClient.cs b/ZeroLevel/Services/Network/SocketClient.cs index d20e100..f61e907 100644 --- a/ZeroLevel/Services/Network/SocketClient.cs +++ b/ZeroLevel/Services/Network/SocketClient.cs @@ -61,7 +61,7 @@ namespace ZeroLevel.Network { try { - _clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + _clientSocket = new Socket(ep.AddressFamily, SocketType.Stream, ProtocolType.Tcp); _clientSocket.SetIPProtectionLevel(IPProtectionLevel.Unrestricted); _clientSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.DontLinger, true); _clientSocket.Connect(ep); diff --git a/ZeroLevel/Services/Network/SocketServer.cs b/ZeroLevel/Services/Network/SocketServer.cs index 39c8cd0..9433680 100644 --- a/ZeroLevel/Services/Network/SocketServer.cs +++ b/ZeroLevel/Services/Network/SocketServer.cs @@ -60,7 +60,7 @@ namespace ZeroLevel.Network { _router = router; LocalEndpoint = endpoint; - _serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + _serverSocket = new Socket(endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); _serverSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true); _serverSocket.Bind(endpoint); _serverSocket.Listen(100);