计算C#UdpClient.Send()数据报中的字节数

时间:2009-04-14 05:01:24

标签: c# udp datagram

在C#中,为了使用UdpClient.Send()方法,我必须提供我发送的字节数作为其中一个参数。

如何在发送之前计算数据报中的字节数?

2 个答案:

答案 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变体&乘以数据类型大小。