Вычисление количества байтов в дейтаграмме C # UdpClient.Send () - PullRequest
0 голосов
/ 14 апреля 2009

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

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

Ответы [ 2 ]

4 голосов
/ 14 апреля 2009

Вы передаете UdpClient.Send () массив байтов (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());    
}

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

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

0 голосов
/ 14 апреля 2009

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

...