Необходимо или рекомендуется сделать асинхронный сокет UDP только для отправки? - PullRequest
0 голосов
/ 18 декабря 2018

Я использую сокет UDP для отправки данных журнала событий на сервер анализа журналов, и не хочу без необходимости блокировать потоки.Отправляющим приложением является фоновая служба Windows, использующая пул потоков по умолчанию.

 // Should this be async? It's UDP only...
   public static void LogUDP(string message)
    {
        try
        {
            var hostname = ConfigurationManager.AppSettings.Get<string>("SyslogUDPHostName", string.Empty);
            var portString = ConfigurationManager.AppSettings.Get<string>("SyslogUDPHostPort", string.Empty);
            var port = Convert.ToInt32(portString);

            var ipParse = System.Net.Dns.GetHostAddresses(hostname);
            var ip = ipParse.First();

            // Create Endpoint
            var udpEndpoint = new System.Net.IPEndPoint(ip, port);

            // Create Socket
            var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            socket.Ttl = 26;

            // Connect the socket
            socket.Connect(udpEndpoint);

            // Create the encoded buffer
            var buffer = System.Text.Encoding.ASCII.GetBytes(message);

            // Send the buffer
            var sent = socket.Send(buffer);
        }
        catch (Exception ex)
        {

        }
    }

Необходимо или рекомендуется использовать Async для исходящих сообщений только на основе UDP?

Я просматриваю образец предоставленного Microsoft кода , чтобы узнать, как написать эквивалентный асинхронный код, но не уверен, нужен ли он.Мои сомнения подтверждаются, когда я смотрю на перегрузки для BeginSend, и у каждого метода есть AsyncCallback, а в случае UDP я не уверен, что туда поместить (ноль?)?

Совет приветствуется.

...