在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变体乘法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top