Pregunta

En C #, con el fin de utilizar el método UdpClient.Send () Debo proporcionar como uno de los parámetros el número de bytes que estoy enviando.

¿Cómo calculo el número de bytes en un datagrama antes de enviarlo?

¿Fue útil?

Solución

Se pasa UdpClient.Send () una matriz de bytes (byte []), un tamaño de número entero, y un IPEndPoint. Si va a enviar todo el conjunto de bytes, nada más y nada menos, que la carga útil del datagrama, sólo puede utilizar la propiedad Longitud de las matrices de la siguiente manera:

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());    
}

Tal vez la confusión aquí es que creo que hay que contar el número de bits que se enviarán a través del cable? Lo que realmente se requiere es sólo el tamaño de la carga útil (la parte de la matriz de bytes proporcionada en realidad se desea enviar en este datagrama). La biblioteca hará el resto.

aquí .

Otros consejos

No está seguro de qué idioma se está utilizando para impement este cliente UDP. En C ++, el operador sizeof proporciona el número de bytes. Otro enfoque sería utilizar strlen () o sus variantes Unicode y se multiplican por el tamaño de tipo de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top