Calcular o número de bytes em C # UdpClient.Send () datagrama
Pergunta
Em C #, a fim de utilizar o método UdpClient.Send () I deve fornecer como um dos parâmetros o número de bytes que estou enviando.
Como faço para calcular o número de bytes em um datagrama antes de enviá-lo?
Solução
passar UdpClient.Send () uma matriz de bytes (byte []), um tamanho de número inteiro, e um IPEndPoint. Se você está enviando toda a matriz de bytes, nada mais e nada menos, como carga útil do seu datagrama, você pode simplesmente usar a propriedade Comprimento de matrizes da seguinte forma:
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());
}
Talvez a confusão aqui é que você acha que tem para contar o número de bits que serão enviados para fora sobre o fio? O que é realmente necessário é apenas o tamanho da carga útil (a parte da matriz de bytes desde que você realmente quer enviar neste datagrama). A biblioteca vai fazer o resto.
Exemplos e informações aqui .
Outras dicas
Não sei o idioma que você está usando para impement este cliente UDP. Em C ++, sizeof operador fornece o número de bytes. Outra abordagem seria usar strlen () ou o seu unicode variantes e multiplicar pelo tamanho do tipo de dados.