【问题标题】:dotnet core, console app, UDP, why aren't messages being received?dotnet 核心、控制台应用程序、UDP,为什么没有收到消息?
【发布时间】:2019-09-14 09:11:59
【问题描述】:

我正在努力让 dotnet 核心控制台应用程序接收 UDP 消息。当我在 dotnet 框架控制台应用程序中使用相同的代码时,会收到消息,所以我觉得没有什么应该阻止它们(即防火墙等)。

我已尝试使用 Visual Studio 运行此项目,并发布了发布版本并在命令窗口中使用 dotnet 运行,但没有收到任何信息。没有例外。看起来很简单。我不知所措。任何建议表示赞赏。谢谢。

这是代码:

static void Main(string[] args)
{
    var client = new UdpClient(10006);
    var ipEndPoint = new IPEndPoint(IPAddress.Any, 0);

    var msgReceived = client.Receive(ref ipEndPoint);
    Console.WriteLine($"received '{Encoding.ASCII.GetString(msgReceived)}'");
}

我在这里看到了相同/相似的问题,但没有答案: How to send and receive commands from a UDP network server via .NET Core console application

【问题讨论】:

    标签: .net-core udp


    【解决方案1】:

    您确定您实际上是在向该机器和端口号发送数据吗? 代码应该可以正常工作。我把它放在我的 Main 中,它会接收数据。 我使用线程,所以它们可以在同一个进程中,我没有将它作为单独的进程进行测试。

    var threadReceiver = new Thread(() =>
    {
        var client = new UdpClient(10006);
        var ipEndPoint = new IPEndPoint(IPAddress.Any, 0);
    
        var msgReceived = client.Receive(ref ipEndPoint);
        Console.WriteLine($"received '{Encoding.ASCII.GetString(msgReceived)}'");
    });
    
    
    
    var threadSender = new Thread(() =>
    {
        var client = new UdpClient(10007);
        var ipEndPoint = new IPEndPoint(IPAddress.Any, 0);
        var bytes = Encoding.ASCII.GetBytes("this is the data");
        Thread.Sleep(1000);
        var msgReceived = client.Send(bytes, bytes.Length, new IPEndPoint(IPAddress.Parse("127.0.0.1"), 10006)) ;
        Console.WriteLine($"Sent data");
    });
    
    threadReceiver.Start();
    threadSender.Start();
    
    threadReceiver.Join();
    

    这个输出:

    Sent data
    received 'this is the data'
    

    当我第一次运行此程序时,Windows 防火墙要求我允许流量。我检查了私人和公共网络。您需要确保为您连接的网络类型启用了防火墙。检查网络设置以查看 Windows 是否认为是公共的或私有的。您可以在 Windows 防火墙设置中为应用手动设置防火墙规则。

    【讨论】:

    • 感谢您抽出宝贵时间回复 Ciaran。似乎这是 dotnet core 2.1 中的一个错误,因为它在升级到 3.0 后开始工作。
    猜你喜欢
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 2019-09-26
    • 2020-11-07
    相关资源
    最近更新 更多