在 C# 中,为了使用 UdpClient.Send() 方法,我必须提供要发送的字节数作为参数之一。
如何在发送之前计算数据报中的字节数?
您向 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());
}
也许这里的困惑是您认为您必须计算将通过线路发送的位数?实际需要的只是有效负载的大小(您实际希望在此数据报中发送的所提供字节数组的一部分)。图书馆将完成剩下的工作。
示例和信息在这里。
不确定您使用什么语言来实现此 UDP 客户端。在 C++ 中,sizeof 运算符提供字节数。其他方法是使用 strlen() 或其 unicode 变体并乘以数据类型大小。