UdpClient

2 отговора 110 прегледа
#1

UdpClient

Използвам UdpClient за да пратя пакет към даден адрес/порт (172.16.100.101/161 например). При това Windows автоматично ми дава порт от който излиза моя пакет.
(От снифера:Src Port: 1120 (1120), Dst Port: snmp (161))
Как мога да разбера в моята програма кой порт за изход ми е разрешила ОС?

Ето как пращам пакета:
UdpClient myUdpClient = new UdpClient();
IPEndPoint endp=new IPEndPoint(IPAddress.Parse("172.16.100.101"),161);
myUdpClient.Send(packet,packet.Lenght,endp);

Метода Send връща някаква int която в Help-а не я споменават.
( Пробвах - беше 53)

Отговор
в отговор на Cвилeн #2

Re: UdpClient

Напиши твой клас наследник на UdpClient, например MyUdpClient и в него дефинирай public свойство връщащо Client от базовия клас.
public class MyUdpClient : UdpClient
{
public Socket Socket { get { return base.Client; } }
}

Отговор
в отговор на Vlady #3

Re: UdpClient

След това можеш да извлечеш порта с:
IPEndPoint ep = Socket.LocalEndPoint as IPEndPoint;
int port = ep.Port;

Отговор