在C#中,为了使用UdpClient.Send()方法,我必须提供我发送的字节数作为其中一个参数。
如何在发送之前计算数据报中的字节数?
答案 0 :(得分:4)
传递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());
}
这里的混乱可能是你认为你必须计算通过网络发送的比特数?实际需要的只是有效负载的大小(实际上要在此数据报中发送的提供的字节数组的部分)。图书馆将完成剩下的工作。
示例和信息here。
答案 1 :(得分:0)
不确定您使用哪种语言来强制使用此UDP客户端。在C ++中,sizeof运算符提供了字节数。其他方法是使用strlen()或它们的unicode变体&乘以数据类型大小。