Beispiel #1
0
 /// <summary>
 /// Initialize UDP server with a given IP address and port number
 /// </summary>
 /// <param name="address">IP address</param>
 /// <param name="port">Port number</param>
 public UdpServer(string address, int port,
                  Func <IPEndPoint, byte[], Task <byte[]> > responseHandlerAsync,
                  ILogger logger,
                  UdpServerOptionsModel options = null)
     : this(new IPEndPoint(IPAddress.Parse(address), port), responseHandlerAsync, logger, options)
 {
 }
Beispiel #2
0
        /// <summary>
        /// Initialize UDP server with a given IP endpoint
        /// </summary>
        /// <param name="receivingEndpoint">IP endpoint</param>
        public UdpServer(IPEndPoint receivingEndpoint,
                         Func <IPEndPoint, byte[], Task <byte[]> > responseHandlerAsync,
                         ILogger logger,
                         UdpServerOptionsModel options = null)
        {
            Id            = Guid.NewGuid();
            LocalEndpoint = receivingEndpoint;

            _options = options ?? new UdpServerOptionsModel();

            if (_options.LingerState == null)
            {
                _options.LingerState = new LingerOption(true, 10);
            }

            if (_options.BufferSize == null)
            {
                _options.BufferSize = 256;
            }

            if (_options.ConnectTimeoutInMilliseconds <= 0)
            {
                _options.ConnectTimeoutInMilliseconds = 15000;
            }

            _logger = logger;

            receiveEventArg                = new SocketAsyncEventArgs();
            receiveEventArg.Completed     += ProcessReceiveCompleted;
            receiveEventArg.RemoteEndPoint = new IPEndPoint((LocalEndpoint.AddressFamily == AddressFamily.InterNetworkV6) ? IPAddress.IPv6Any : IPAddress.Any, 0);

            var bufferSize = _options.BufferSize.Value;
            var buffer     = new byte[bufferSize];

            receiveEventArg.SetBuffer(buffer, 0, (int)buffer.Length);

            this.onReceivedFuncAsync = responseHandlerAsync;
        }