2010-07-21 13 views
7

Chciałem wysłać UdpPacket do konkretnego zdalnego hosta (znam już publiczny adres IP i port). Chciałem użyć klasy UdpClient języka C#.Jak określić port źródłowy pakietu UdpPacket?

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

Podczas wysyłania pakietu, UdpClient automatycznie wybiera dostępny port. Chcę ręcznie ustawić port, z którego wysyłam pakiety.

Dzięki za pomoc z góry!

Odpowiedz

10

Spróbuj określić punkt końcowy podczas tworzenia UdpClient:

UdpClient client = new UdpClient(localEndpoint); 

EDIT: Zauważ, że można też podać tylko numer portu:

UdpClient client = new UdpClient(localPort); 

które mogą być nieco prostsze :)

+0

Wow, dziękuję !!! To działa! Myślałem, że ten konstruktor może być użyty tylko wtedy, gdy chcesz otrzymywać wiadomości. UdpClient = nowy UdpClient (nowy IPEndPoint (IPAddress.Parse ("0.0.0.0"), 9999)); przepracowany – raisyn

+0

@youllknow: Było trochę zgadywania, co prawda :) Właśnie zredagowałem swoją odpowiedź z możliwie prostszym sposobem robienia tego. Warto spróbować ... –

+0

hm .. czy istnieje sposób na przełączenie srcPorta nie tylko przez konstruktora? – kchoi