C# 里面的socket接受的byte字符数组怎么给他解析成发过来的数据

yangjing6693 2012-06-07 10:19:28
我的C#程序 用socket连接到C++ 接收到一个byte[1024*1024*4] 的byte数组 里面每个字符都是数字 ,比如第一个是18
第二个是0,第三个是0第四个是0第五个是42 后面一大堆 这个怎么解析成他发给我的数据 我刚接触这个socket 不知道怎么弄得 那位能帮帮我 谢谢


下面我把我的代码粘贴出来
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ipa = IPAddress.Parse("172.16.10.5"); //连接ip
endPoint = new IPEndPoint(ipa, 6666); //连接端口
socket.Connect(endPoint);
lianjie = true;
int nGetLength = 0;
nGetLength = socket.Receive(b_receivedata,b_receivedata.Length,0 );

因为没有 发送数据 只是连接上 他就给我发数据了 所以下面直接接收了
那个 b_receivedata 里面接收的数据怎么解出来(那边给我发的是他的计算机硬件的信息,比如内存多大,用了多少内存,可用内存 等等)

在线等解决办法 谢谢
...全文
1071 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangjing6693 2012-06-07
  • 打赏
  • 举报
回复
他发过来时转换成 char类型发过来的
yangjing6693 2012-06-07
  • 打赏
  • 举报
回复
obj 那个 不存在
yangjing6693 2012-06-07
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]
引用 14 楼 的回复:
他发送的 就是以结构形式发送的
send(sock_client,(char*)&ms,sizeof(ms),0); 里面的ms是那个结构

8楼的方式转换
[/Quote]
用过了 没反应额
__天涯寻梦 2012-06-07
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]
他发送的 就是以结构形式发送的
send(sock_client,(char*)&ms,sizeof(ms),0); 里面的ms是那个结构
[/Quote]
8楼的方式转换
yangjing6693 2012-06-07
  • 打赏
  • 举报
回复
他发送的 就是以结构形式发送的
send(sock_client,(char*)&ms,sizeof(ms),0); 里面的ms是那个结构
hack_pan 2012-06-07
  • 打赏
  • 举报
回复
接着你的
nGetLength = socket.Receive(b_receivedata,b_receivedata.Length,0 );
if(nGetLength>0)
{
//byte数组可以转为任意形式,发送方发送什么格式,你就转换为什么格式,这里架设发送是按csv格式发过来的
string rReceive=Encoding.Utf8/*格式要对应*/.GetString(b_receivedata,0,nGetLength);
string[] results=rReceive.Split(",");
//再按照格式一一取出对应的数据。
}

PS:最主要你要清楚对方方式过来的信息格式,文件流,视频语音流,字符串还是类,双方是要统一,不然怎么分析。
yangjing6693 2012-06-07
  • 打赏
  • 举报
回复
嗯 我跟他说说
__天涯寻梦 2012-06-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
他说的是 给我把这些数据以字符串形式给我发过来了
[/Quote]
别字符串了,更麻烦,就让他在 C++ 里把结构当字节数组发,用 8楼方法解开
yangjing6693 2012-06-07
  • 打赏
  • 举报
回复
他说的是 给我把这些数据以字符串形式给我发过来了
yangjing6693 2012-06-07
  • 打赏
  • 举报
回复
要弄个实体类么??
__天涯寻梦 2012-06-07
  • 打赏
  • 举报
回复
定义个结构
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct MemoryStatus
{
uint dwMemoryLoad; // 物理内存使用率
uint dwTotalPhys; // 物理内存总数
uint dwAvailPhys; // 物理内存可用数
uint dwTotalPageFile;// 页文件总数
uint dwAvailPageFile;// 页文件用数
uint dwTotalVirtual; // 虚拟内存总数
uint dwAvailVirtual; // 虚拟内存可用数
}

将字节数组转换成结构
byte[] bytes = 你接收到的字节数组;

Type type = typeof(MemoryStatus);
int size = Marshal.SizeOf(type);
IntPtr p = Marshal.AllocHGlobal(size);
Marshal.Copy(bytes, 0, p, size);
MemoryStatus obj = (MemoryStatus)Marshal.PtrToStructure(p, type); //obj 就是转换后得到的结构
Marshal.FreeHGlobal(p);
cnfixit 2012-06-07
  • 打赏
  • 举报
回复
c#结构定义

[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
public struct MemoryStatus {

/// DWORD->unsigned int
public uint dwMemoryLoad;

/// DWORD->unsigned int
public uint dwTotalPhys;

/// SIZE_T->ULONG_PTR->unsigned int
public uint dwAvailPhys;

/// SIZE_T->ULONG_PTR->unsigned int
public uint dwTotalPageFile;

/// SIZE_T->ULONG_PTR->unsigned int
public uint dwAvailPageFile;

/// SIZE_T->ULONG_PTR->unsigned int
public uint dwTotalVirtual;

/// SIZE_T->ULONG_PTR->unsigned int
public uint dwAvailVirtual;
}

cnfixit 2012-06-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
他说 这是 规则 但是 我第一接触 这个 不懂啊

typedef struct _MemoryStatus
{
DWORD dwMemoryLoad; // 物理内存使用率
DWORD dwTotalPhys; // 物理内存总数
SIZE_T dwAvailPhys; // 物理内存可用数
SIZE_T dwTotalPageFile;// 页文件总数
SIZE_T ……
[/Quote]
那么你现在要做的就是把你接受到的数据,转换成这个结构
yangjing6693 2012-06-07
  • 打赏
  • 举报
回复
他说 这是 规则 但是 我第一接触 这个 不懂啊

typedef struct _MemoryStatus
{
DWORD dwMemoryLoad; // 物理内存使用率
DWORD dwTotalPhys; // 物理内存总数
SIZE_T dwAvailPhys; // 物理内存可用数
SIZE_T dwTotalPageFile;// 页文件总数
SIZE_T dwAvailPageFile;// 页文件用数
SIZE_T dwTotalVirtual; // 虚拟内存总数
SIZE_T dwAvailVirtual; // 虚拟内存可用数
} MemoryStatus,*lpMemoryStatus;
__天涯寻梦 2012-06-07
  • 打赏
  • 举报
回复
去了解 C++ 发送的是什么结构,了解之后 C# 写个相同的结构来转换,就知道发的内容的意思了
bdmh 2012-06-07
  • 打赏
  • 举报
回复
先弄清楚使用什么编码的,然后自己用Encoding中对应的编码取解码,如果还有更复杂的信息,你需要按照你们的协议规则,按照数据结构,读取字段指定长度的值
SocketUp 2012-06-07
  • 打赏
  • 举报
回复
没有协议,怎么解析?
协议,只有你知道,别人帮不了你
cnfixit 2012-06-07
  • 打赏
  • 举报
回复
你知道发送时的数据格式吗?

111,126

社区成员

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

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

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