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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top