11

I wanted to send UdpPacket to a specific remote host (I already know the public IP and Port). I wanted to use C#'s UdpClient class.

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);
}

When sending a packet, the UdpClient choose an available port automatically. I want to manually set the port, from which I send the packets.

Thanks for your help in advance!

raisyn
  • 4,514
  • 9
  • 36
  • 55

1 Answers1

13

Try specifying the endpoint when you create the UdpClient:

UdpClient client = new UdpClient(localEndpoint);

EDIT: Note that you can also specify just the port number:

UdpClient client = new UdpClient(localPort);

That may be somewhat simpler :)

Jon Skeet
  • 1,421,763
  • 867
  • 9,128
  • 9,194
  • Wow thanks!!! It works! I thought this constructor can only be used if you want to receive messages. UdpClient = new UdpClient(new IPEndPoint(IPAddress.Parse("0.0.0.0"), 9999)); worked – raisyn Jul 21 '10 at 09:00
  • @youllknow: It was a bit of a guess, admittedly :) I've just edited my answer with a possibly simpler way of doing it, too. Worth a try... – Jon Skeet Jul 21 '10 at 09:14
  • hm.. is there a way to switch srcPort not just through constructor? – kchoi Jun 01 '16 at 23:02
  • @kchoi: Not that I'm aware of. – Jon Skeet Jun 02 '16 at 07:38
  • I found the answer. client.Client.bind(IPEndPoint) will do it. – kchoi Jun 06 '16 at 18:23