服务端程序用c++开发的,服务端在收到客户端请求后会发送如下结构给客户端:
typedef struct
{
char sMsgID[10+1];
int nErrorCode;
char sPhoneNo[21+1];
}SendBatchResp;客户端是用C#开发,而C#中socket收到的是字节流,请问客户端收到这个这个流式的结构后如何把它还原成一个结构。

解决方案 »

  1.   

    前11个字节是byte[11],但估计你需要的是string
    接着4个字节是int
    然后再22个字节是byte[22],估计同上假设收到了一个byte[37]名叫stream那么,将前11字节截取出来并作为string返回的方法是
    string sMsgID = System.Text.Encoding.ASCII.GetString(stream, 0, 11);
    // 注:可能多余的\0字符也包含在返回之中;如果要去掉他们,就
    // sMsgID = sMsgID.TrimEnd('\0');然后获取中间的int
    int nErrorCode = BitConverter.ToInt32(stream, 11);最后获取后面的22个字节
    string sPhoneNo = System.Text.Encoding.ASCII.GetString(stream, 15, 22)
       /* .TrimEnd('\0') */ ;