C#-无法在第二台计算机上接收UDP

时间:2019-06-17 19:01:45

标签: c# udp

我可以将UDP消息从一台计算机发送到某个端口上的自身,但无法将此消息从一台计算机发送到同一局域网中的另一台计算机。我是C#的新手,也是网络编程的新手,因此该解决方案可能很简单...

我尝试了Microsoft Docs提供的示例,但只做了很小的更改。 (名称等)

两个代码都作为单独的程序运行。

//RECEIVE
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

public class UDPListener
{
private const int listenPort = 11000;

private static void Listen()
{
    UdpClient listener = new UdpClient(listenPort);
    IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);

    try
    {
        while (true)
        {
            Console.WriteLine("Waiting for broadcast");
            byte[] receivebytes = listener.Receive(ref groupEP);

            Console.WriteLine(Encoding.ASCII.GetString(receivebytes, 0, receivebytes.Length));
        }
    }
    catch (SocketException e)
    {
        Console.WriteLine(e);
    }
    finally
    {
        listener.Close();
    }
}

public static void Main()
{
    Listen();
}
}
 //SEND
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

class Program
{
static void Main(string[] args)
{
    Socket socket = new Socket(AddressFamily.InterNetwork,        SocketType.Dgram, ProtocolType.Udp);

    //192.168.2.5 is the IP Address of the receiving computer
    IPAddress broadcast = IPAddress.Parse("192.168.2.5");

    byte[] bytestosend = Encoding.ASCII.GetBytes("Hi");
    IPEndPoint ep = new IPEndPoint(broadcast, 11000);

    socket.SendTo(bytestosend, ep);

    Console.WriteLine("bytestosend were send");
}
}

发送程序告诉我消息已发送,但是接收程序没有输出。

编辑1:资源管理器说,在接收方计算机上实际上没有网络活动,而在发送方计算机上实际上是在发送东西。

编辑2:我在另一个网络中尝试了我的应用程序,并且运行良好。我做了一些研究,发现有时路由器不允许通过子网(或类似的东西)进行udp广播。所以我认为这可能是我的路由器。 (很遗憾,我无法访问它的设置。)因此,我认为问题已解决!

0 个答案:

没有答案