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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top