对于整Socket网络通讯的人来说,packet这玩意一定不会陌生.但是要知道此类的字段字节总数,使用Marshal.SizeOf,无疑是一个非常好的选择.这样可以大大节省你计算字节数的时间.
为忠县等地区用户提供了全套网页设计制作服务,及忠县网站建设行业解决方案。主营业务为成都网站制作、网站建设、外贸网站建设、忠县网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
使用方法:Marshal.SizeOf( packet实例 )
using System; using System.Runtime.InteropServices; using CMD.com; namespace CMD { public class Program { static void Main(string[] args) { Myttee my = new Myttee(); my.bcc = 2; Console.WriteLine(Marshal.SizeOf(my)); Console.Read(); } } }
关于 Myttee:
//===================================================================== // // All right reserved // filename : Myttee // description : // // create by User at 2016/8/11 13:48:31 //===================================================================== using System.Runtime.InteropServices; namespace CMD.com { [StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)] internal struct Myttee { public ushort wcc; public ushort bcc; private ushort ccc; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)] public char[] MachineID; public void Init() { this.ccc = 10; this.MachineID = new char[] {'1', '2', '3'}; } public ushort MKK { get { return 1; } } } }
其结果为26 . 3个ushort + 10个unicode字符 = 3X2 + 10X2 = 26
当然 : 如果没有 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)] 特性
则使用Marshal.SizeOf就是一个坑 , 谁知道String占多少字节???