C# MVC4启动udp侦听器

C# MVC4启动udp侦听器,c#,asp.net-mvc-4,udp,udpclient,C#,Asp.net Mvc 4,Udp,Udpclient,我使用c MVC 4作为服务器,这意味着我在其中没有视图,它当前接受对控制器的Http/s请求,处理它们,查询数据库,并向用户返回一个json对象 我想增强我的服务器并添加udp或tcp,我还没有完全决定 问题是,我还没有看到有人这样做,每个人都使用控制台应用程序或类似WCF的应用程序,因为侦听器可能会被某种动作触发 我有一个来自CodeProject的标准代码 // Create UDP client UdpClient client = new UdpClient(localPort); U

我使用c MVC 4作为服务器,这意味着我在其中没有视图,它当前接受对控制器的Http/s请求,处理它们,查询数据库,并向用户返回一个json对象

我想增强我的服务器并添加udp或tcp,我还没有完全决定

问题是,我还没有看到有人这样做,每个人都使用控制台应用程序或类似WCF的应用程序,因为侦听器可能会被某种动作触发

我有一个来自CodeProject的标准代码

// Create UDP client
UdpClient client = new UdpClient(localPort);
UdpState state = new UdpState(client, remoteSender);
// Start async receiving
client.BeginReceive(new AsyncCallback(DataReceived), state);


private static void DataReceived(IAsyncResult ar)
{
    UdpClient c = (UdpClient)((UdpState)ar.AsyncState).c;
    IPEndPoint wantedIpEndPoint = (IPEndPoint)((UdpState)(ar.AsyncState)).e;
    IPEndPoint receivedIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
    Byte[] receiveBytes = c.EndReceive(ar, ref receivedIpEndPoint);

    // Check sender
    bool isRightHost = (wantedIpEndPoint.Address.Equals(receivedIpEndPoint.Address) 
                       || wantedIpEndPoint.Address.Equals(IPAddress.Any);
    bool isRightPort = (wantedIpEndPoint.Port == receivedIpEndPoint.Port)
                       || wantedIpEndPoint.Port == 0;
    if (isRightHost && isRightPort)
    {
        // Convert data to ASCII and print in console
        string receivedText = ASCIIEncoding.ASCII.GetString(receiveBytes);
        Console.Write(receivedText);
    }

    // Restart listening for udp data packages
    c.BeginReceive(new AsyncCallback(DataReceived), ar.AsyncState);
}
我的问题是,当我运行服务器时,如何设置侦听器开始工作

框架:.Net框架4.5


输出类型:类库

我以前提出过类似的想法,但没有继续,因为我无法证明侦听器依赖于我运行的web应用程序……除非它是为了响应通过控制器采取的某些操作。在这种情况下,我希望它将在控制器操作中完成。所以,也许您可以解释为什么您希望此侦听器仅在web应用程序运行时运行。这可能会澄清如何/如果您能够实现您的目标基本上,我希望允许用户将文件上载到服务器,并且我希望服务器将所有用户的请求和选项集中在一个地方。基本上,我想这样做是为了体验udp/tcp托管,而不仅仅是作为一个客户机。这有点像在你的车里建造一个引擎,它已经有了一个引擎。但是如果你真的想这样做,而不是一个控制台应用程序或windows服务,然后把你的代码放在这里,我真的很想得到更多的解释,关于你如何描述我所做的,我会接受这作为一个答案。为什么错了?为什么我的想法在这里是错误的?