public async Task SendAsync(byte [] buffer, IPAddress gatewayAddressNullable, CancellationToken token) { using (await SocketSendLocker.DisposableWaitAsync(token)) { foreach (var socket in Sockets) { try { if (gatewayAddressNullable == null) { foreach (var defaultGateway in socket.Value) { await socket.Key.SendAsync(buffer, buffer.Length, new IPEndPoint(defaultGateway, DefaultPort)); } } else { await socket.Key.SendAsync(buffer, buffer.Length, new IPEndPoint(gatewayAddressNullable, DefaultPort)); } } catch (Exception) { ////?????????????? } } } }
public async Task SendAsync(byte[] buffer, IPAddress gatewayAddress, CancellationToken token) { using (await SocketSendLocker.EnterAsync(token)) { foreach (var keypair in Sockets) { token.ThrowIfCancellationRequested(); try { if (gatewayAddress == null) { foreach (var defaultGateway in keypair.Value) { await keypair.Key.SendAsync(buffer, buffer.Length, new IPEndPoint (defaultGateway, DefaultPort)).ConfigureAwait(false); } } else { await keypair.Key.SendAsync(buffer, buffer.Length, new IPEndPoint (gatewayAddress, DefaultPort)).ConfigureAwait(false); } } catch (OperationCanceledException) { throw; } catch (Exception) { } } } }