需要实现的功能有三个:登陆验证、传送文字信息、传送文件
目前我是这么定义的,但是感觉实现不了,请各位指点一下吧。
typedef struct _tagRecvType
{
short nLength; //当前包的总长度
BYTE Tag; //标记,值为0X55
BYTE Command; //自定义的应用层协议,为0X01的时候是登陆,0X02的时候为传送文本数据,0X03的时候为传文件
BYTE BCheckSum; //包头校验和
char chContent[1024]; //数据内容
long lCheckSum; //数据校验和
}RecvType;登陆个发文本信息还是比较好实现,但是不知道发文件怎么处理。是在Command为传文件命令的时候再把chContent再细分几部分么?做过的指点一下吧,谢谢了。

解决方案 »

  1.   

    发文件的话再加个标识就够了。nfile
      

  2.   

    不用分开发,比如你有个有个发送的数据块 BYTE* pbuffer整个数据的长度len = 1024.你自己定义了一个数据头
    ,这里为了简单我用个结构体表示。typedef struct _tagPacketHead{
       XXXX
       XXXX
    }tagPacketHead. 那么你可以创建一个内存区。SendBuffer,在0到sizeof(tagPacketHead)字节放你的包头信息,在sizeof(tagPacketHead)+1个字节到sizeof(tagPacketHead)+1024这段位置放你要发送的数据块,这样就构成了。你发送时只需要把 SendBuffer里的数据发送出去就可以了。整个长度是 sizeof(tagPacketHead)+1024.不用分两次发送。
      

  3.   

    如果是udp这类不可靠传输是需要每个包都带包头的,你才好通过序号进行排序,如果是tcp可靠传输,就随便了。
      

  4.   

    TCP保证发送顺序和接收顺序是一致的么?那就是我只验证下数据的完整性,不用管顺序了,是不是?