How to specify source port of a UdpPacket?
Asked Answered
M

1

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!

Meadors answered 21/7, 2010 at 8:48 Comment(0)
S
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 :)

Son answered 21/7, 2010 at 8:50 Comment(5)
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)); workedMeadors
@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...Son
hm.. is there a way to switch srcPort not just through constructor?Sing
@kchoi: Not that I'm aware of.Son
I found the answer. client.Client.bind(IPEndPoint) will do it.Sing

© 2022 - 2024 — McMap. All rights reserved.