Вычисление количества байтов в C# UdpClient.Отправить() дейтаграмму

StackOverflow https://stackoverflow.com/questions/746399

  •  09-09-2019
  •  | 
  •  

Вопрос

В C #, чтобы использовать UdpClient.Метод Send(), я должен указать в качестве одного из параметров количество байтов, которые я отправляю.

Как мне вычислить количество байтов в дейтаграмме перед ее отправкой?

Это было полезно?

Решение

Вы передаете UdpClient.Отправьте() массив байтов (Byte[]), целочисленный размер и IPEndPoint.Если вы отправляете весь массив байтов, не больше и не меньше, в качестве полезной нагрузки вашей дейтаграммы, вы можете просто использовать свойство Length массивов следующим образом:

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

Возможно, путаница здесь заключается в том, что вы думаете, что вам нужно подсчитать количество битов, которые будут отправлены по проводу?Что на самом деле требуется, так это просто размер полезной нагрузки (часть предоставленного массива байтов, которую вы действительно хотите отправить в этой дейтаграмме).Библиотека сделает все остальное.

Примеры и информация здесь.

Другие советы

Не уверен, какой язык вы используете для запуска этого UDP-клиента.В C ++ оператор sizeof указывает количество байтов.Другим подходом было бы использовать strlen() или их варианты в юникоде и умножать на размер типа данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top