Calcolando il numero di byte in C # UdpClient.Send () datagram
Domanda
In C #, al fine di utilizzare il metodo UdpClient.Send () devo fornire come uno dei parametri del numero di byte che mando.
Come faccio a calcolare il numero di byte in un datagramma prima di inviarlo?
Soluzione
Si passa UdpClient.Send () un array di byte (Byte []), una dimensione intero, e un'IPEndPoint. Se si invia l'intero array di byte, niente di più e niente di meno, come payload del datagramma, si può semplicemente utilizzare la proprietà Length di array come segue:
UdpClient udpClient = new UdpClient();
IPAddress ipAddress = Dns.Resolve("www.contoso.com").AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 11004);
Byte[] sendBytes = Encoding.ASCII.GetBytes("Is anybody there?");
try{
udpClient.Send(sendBytes, sendBytes.Length, ipEndPoint);
}
catch ( Exception e ){
Console.WriteLine(e.ToString());
}
Forse la confusione è che pensi di avere a contare il numero di bit che verranno inviati attraverso la rete? Che cosa è effettivamente necessario è solo la dimensione del carico utile (la parte della matrice di byte a condizione che in realtà desidera inviare in questo datagramma). La biblioteca farà il resto.
Gli esempi e le informazioni qui .
Altri suggerimenti
Non sei sicuro di quale lingua si sta utilizzando per impement questo client UDP. In C ++, sizeof fornisce il numero di byte. Altro approccio sarebbe quello di utilizzare strlen () o le loro varianti Unicode e moltiplicare per la dimensione del tipo di dati.