是否有必要或建议使UDP仅发送套接字异步?

时间:2018-12-18 15:13:03

标签: c# sockets asyncsocket system.net.sockets

我正在使用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)
        {

        }
    }

是否有必要或建议对基于UDP的仅出站邮件使用异步?

我正在浏览sample Microsoft-provided code,以学习如何编写等效的异步代码,但不确定是否需要。当我查看BeginSend的重载并且每个方法都有一个AsyncCallback时,我的疑问再次得到了证实;对于UDP,我不确定在那放什么(空?)?

欢迎咨询。

0 个答案:

没有答案