0

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

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

4

2 回答 2

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());    
}

也许这里的困惑是您认为您必须计算将通过线路发送的位数?实际需要的只是有效负载的大小(您实际希望在此数据报中发送的所提供字节数组的一部分)。图书馆将完成剩下的工作。

示例和信息在这里

于 2009-04-14T05:17:32.863 回答
0

不确定您使用什么语言来实现此 UDP 客户端。在 C++ 中,sizeof 运算符提供字节数。其他方法是使用 strlen() 或其 unicode 变体并乘以数据类型大小。

于 2009-04-14T05:04:53.237 回答