向大家请教一个关于socket的send的问题

herony420 2004-08-07 10:32:00
在C语言里,send的数据可以通过指针完成,这样就可以把一个结构实例的地址加上长度就可以send了,在C#中send的是byte[],怎么样把类似于下面的结构的实例send到另一端呢??请大家不吝赐教

public struct NET_DATA
{
public ushort PacketLen;
public ushort PacketType;
public byte nAlarmLevel;//这个包的服务器告警级别0为不告警,值越大级别越高
public NET_PACKET_DATA net_packet_data;


public NET_DATA(int Dummy)
{

PacketLen = 0;
PacketType = 0;
nAlarmLevel = 0;
net_packet_data = new NET_PACKET_DATA();
}
}
...全文
110 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
亲密数 2004-08-09
  • 打赏
  • 举报
回复
我所知结构好像也不能直接转换。除非你自己提供一个转换函数。
1)现在有两个整形成员的结构都不一定是8字节了
2)结构中的成员在内存中也不一定是连续排放的。

参考一下FieldOffsetAttribute,StructLayoutAttribute两个类的帮助,可能有助于此问题的理解。
亲密数 2004-08-09
  • 打赏
  • 举报
回复
我所知结构好像也不能直接转换。除非你自己提供一个转换函数。
1)现在有两个整形成员的结构都不一定是8字节了
2)结构中的成员在内存中也不一定是连续排放的。

参考一下FieldOffsetAttribute,StructLayoutAttribute两个类的帮助,可能有助于此问题的理解。
herony420 2004-08-09
  • 打赏
  • 举报
回复
如果是结构呢,结构应该也可以直接转换吧
亲密数 2004-08-09
  • 打赏
  • 举报
回复
一般做法是把
struct NET_DATA做成类。然后类里面提供一个函数GetBytes(byte[] b),用于把里面的数据转换成byte数组(类似于序列化)。
可能会用到BitConverter类。
m_syb 2004-08-09
  • 打赏
  • 举报
回复
关注。。。
我也在找这个问题的答案
herony420 2004-08-07
  • 打赏
  • 举报
回复
怎么没有人帮我看看呀,帮帮我亚
herony420 2004-08-07
  • 打赏
  • 举报
回复
如果是一个对象的实例呢??还请大家支持一下
herony420 2004-08-07
  • 打赏
  • 举报
回复
自己先UP,请各位高手指点....

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧