C# UDPClient从一些默认端口地址接收数据,尽管我在启动对象时指定了端口地址

C# UDPClient从一些默认端口地址接收数据,尽管我在启动对象时指定了端口地址,c#,network-programming,udpclient,C#,Network Programming,Udpclient,这里,在这个方法中,我传递我想要监听数据的端口地址。但不幸的是,它正在打印一些随机端口地址。 正在就此寻求帮助。您担心serverEP.Port与portNo不包含相同的值?这是意料之中的。您正在收听的是portNo,但是向您发送数据的人可以从他们想要的任何端口发送数据。您好@carton7感谢您的快速响应。我想听听我提到的具体端口。在这种情况下你能帮我吗?你的代码已经是这样了。你做得对。我想您可能被以下事实弄糊涂了:serverEP.Port“正在打印一些随机端口地址”,这就是为什么我告诉您这

这里,在这个方法中,我传递我想要监听数据的端口地址。但不幸的是,它正在打印一些随机端口地址。
正在就此寻求帮助。

您担心
serverEP.Port
portNo
不包含相同的值?这是意料之中的。您正在收听的是
portNo
,但是向您发送数据的人可以从他们想要的任何端口发送数据。您好@carton7感谢您的快速响应。我想听听我提到的具体端口。在这种情况下你能帮我吗?你的代码已经是这样了。你做得对。我想您可能被以下事实弄糊涂了:
serverEP.Port
“正在打印一些随机端口地址”,这就是为什么我告诉您这是预期的贪婪,假设我正在使用端口地址124向这个updclient发送数据。这个端口地址是否会被打印或其他端口。我不明白你的问题。每个UDP数据包都有一个源端口和一个目标端口。您正在端口
portNo
上收听。发送给您的每个数据包都有一个目标端口
portNo
。从您发送的每个数据包的源端口都是
portNo
public void Listener(int portNo)
        {
            listener = new UdpClient(portNo);
            serverEP = new IPEndPoint(IPAddress.Any, portNo);
            while (true)
            {
                byte[] data = listener.Receive(ref serverEP);
                RaiseDataReceived(new ReceivedDataArgs()
                {
                    Ipaddress = serverEP.Address,
                    Port = serverEP.Port,
                    ReceivedBytes = data
                });
            }
        }
public class ReceivedDataArgs : EventArgs
{
    public IPAddress Ipaddress { get; set; }
    public int Port { get; set; }
    public byte[] ReceivedBytes;
}