如何指定UdpPacket的源端口?

11

我想要发送UdpPacket到特定的远程主机(我已经知道公共IP和端口)。 我想要使用C#的UdpClient类。

static int Main()
{
     UdpClient client = new UdpClient();
     IPEndPoint remoteEP = new IPEndPoint(IPAddress.Parse("1.2.3.4"), 9999);

     byte[] data = GetData();
     client.Send(data, data.Length, remoteEP);
}

在发送数据包时,UdpClient会自动选择一个可用的端口。我希望能够手动设置发送数据包所使用的端口。

提前感谢您的帮助!

1个回答

13

尝试在创建UdpClient时指定端点:

UdpClient client = new UdpClient(localEndpoint);

编辑:请注意,您也可以只指定端口号:

UdpClient client = new UdpClient(localPort);

可能会更简单一些 :)


哇,谢谢!它起作用了!我以为这个构造函数只能用于接收消息。UdpClient = new UdpClient(new IPEndPoint(IPAddress.Parse("0.0.0.0"), 9999)); 运行正常。 - raisyn
@youllknow:我承认这有点猜测的成分 :) 我刚刚编辑了我的答案,提供了一个可能更简单的方法。值得一试... - Jon Skeet
嗯...有没有办法不仅通过构造函数来切换srcPort? - kchoi
@kchoi:据我所知,没有这个功能。 - Jon Skeet
我找到了答案。client.Client.bind(IPEndPoint) 就可以了。 - kchoi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接