java udp 结构体_UdpClient 如何发送结构体

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 如何发送结构体!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值