typedef struct LoGo
{
CString username;
CString Password;
} Logoer;
这样一个结构体发过去接受就成乱玛了,郁闷啊。有没有高手告诉我怎么办啊-_-
我怀疑是不是因为CString长度不定啊
我想做个网络登陆的程序,用MFC最地,如果不用char 我还要循环一个一个把文本框里的CString
给字符串,99我啊,我要疯了

解决方案 »

  1.   

    你的这个结构体长度只有8个字节,因为CString就是一个字符串指针类型,我想的本意不会是发送8个子节过去而是发送字符串内容
    结构体可以定义成这样
    typedef struct
    {
        char username[20];
        char passward[20];
    }Logoer;
      

  2.   

    晕,基本常识阿,网络上你竟然传递CString,网线认识CString吗?呵呵
    在网络中,只能传递字节流,除非你定义了自己的串行化处理和并行化处理,能把Cstring在发送前转成char*,接受后再转成CString,否则,你就不要定义CString的解构体
    一般的做法都是定一个协议,协议头包含内容长度,你参考一下HTTP协议
      

  3.   

    CString.GetBuffer() 获取字符串指针
    CString.GetLength() 获取字符串长度
    然后再拼接成字节流,send 出去网络的数据传送从来都是一个一个字节的传
      

  4.   

    结构体的长度要固定,就象aspvbjava(注定走入地狱)说的那样。
    最好选择单字节对齐,否则可能有问题 。
      

  5.   

    typedef struct
    {
    char username[20];
    char passward[20];
    }Logoer;是正解.不能用CString
      

  6.   

    "在网络中,只能传递字节流,除非你定义了自己的串行化处理和并行化处理,能把Cstring在发送前转成char*,接受后再转成CString,否则,你就不要定义CString的解构体
    "
    请问怎么定义?