题
在C#,在为了使用UdpClient.Send()方法我必须提供作为参数之一我送的字节数。
如何计算在数据报的字节数发送之前?
解决方案
您传递UdpClient.Send()字节数组(字节[]),整数大小,和一个IPEndPoint。如果您发送的整个字节数组,仅此而已少,因为你的数据包的有效载荷,你可以只使用数组的长度属性如下:
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());
}
也许这里的困惑是,你觉得你有来算,这将通过线路发送出去的位数?什么是真正需要的是有效载荷(你真的想在这个发送数据报所提供的字节数组的一部分)的只是大小。该库将完成剩下的。
实施例和信息这里。
其他提示
不知道您使用的是impement该UDP客户端的语言。在C ++中,sizeof运算符提供的字节数。其它的方法是通过将数据类型大小使用strlen()或它们的Unicode变体乘法。
不隶属于 StackOverflow