public struct codinate
{
public int x;
public int y;
}
codinate a;
a.x = 10;
a.y = 20;//如何将a这个结构体发送过去呢?
UdpClient udpsender = new UdpClient();
IPEndPoint ipend = new IPEndPoint(IPAddress.Parse("192.168.1.255"), 6000);
string message = "ok";
byte[] bytes = Encoding.ASCII.GetBytes(message);
udpsender.Send(bytes, bytes.Length, ipend);
udpsender.Close();
可以给出具体代码吗?
—-
你可以使用json编码,或者更高效率的编码方式,对业务对象进行序列化。
—-
传一个”ok”也太随意了。你应该传自定义的对象。而且保证.net、java、javascript等等之间也可以识别此对象。所以可以使用json。
—-
通过序列化把结构体转换为byte[]
如果要追求效率,也可以自定义规则,将数据转换为数组
只有发送和接收的操作对称就可以
—-
你也许可以试试C++
—-
就是不会嘛~你这也说得太笼统了
—- 40分
public static byte[] StructToBytes(object structObj)
{
int size = Marshal.SizeOf(structObj);
IntPtr buffer = Marshal.AllocHGlobal(size);
try
{
Marshal.StructureToPtr(structObj, buffer, false);
byte[] bytes = new byte[size];
Marshal.Copy(buffer, bytes, 0, size);
return bytes;
}
finally
{
Marshal.FreeHGlobal(buffer);
}
}
—-
你这个方法让我解决了问题,我想知道如将bytes 转为 structObj呢?
—-
b = (codinate)Marshal.PtrToStructure(buffer, typeof(codinate)); 我找到方法了! thanks
CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明UdpClient 如何发送结构体!