采用结构体通信需要注意些什么问题呢?我的服务器端接收到的数据是错误的,cmd正确,其他为 ^@ 。struct MsgPackage{
char cmd;
int  ack;
char userName[20];
char userPswd[16];
struct TaskC TaskClass[MAXTCNUM];
struct Task TaskList[MAXTASKNUM];
};socket 单词传输字节大小限制是多少?
vc编译器有其他特性?

解决方案 »

  1.   

    vc端的定义class CMainSocket : public CSocket
    {
    // Attributes
    public:// Operations
    public:
    CMainSocket();
    virtual ~CMainSocket();  BOOL m_bConnected;    //是否连接
         UINT m_nLength;        //消息长度
     
    #pragma pack(4)
    struct TaskC{ //待办任务类别
    char TcNo[2]; //待办任务模块编号
    char TcContent[10]; //待办任务模块名称
    }; struct Task{ //待办任务
    char TaskNo[10]; //待办任务编号
    char TaskContent[1024];  //待办任务内容
    };
    struct MsgPackage{ //通信协议结构体
    int  ack; //标志位
    char cmd; //操作命令
    char userName[20]; //用户名
    char userPswd[20]; //用户密码
    //struct TaskC TaskClass[MAXTCNUM]; //待办任务类别
    //struct Task TaskList[MAXTASKNUM]; //待办任务队列
    }msgpackage;
    #pragma pack()
    // Overrides
    public:
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CMainSocket)
    //}}AFX_VIRTUAL // Generated message map functions
    //{{AFX_MSG(CMainSocket)
    // NOTE - the ClassWizard will add and remove member functions here.
    //}}AFX_MSG// Implementation
    protected:
    };
      

  2.   


    问题渐渐明了。
    之前数据包结构体定义在socket类中,现在单独定义,数据正常了。