本帖最后由 chen_bq 于 2014-04-26 09:04:51 编辑

解决方案 »

  1.   

    sendData为什么要加(char*)强制转换了?改为send(s,&sendData,,0);试试
      

  2.   

    c++中发送的结构体,如何把java接收到数据转成相应的结构体呢,这两者的数据结构体在内存中的位置是否相同,不然如何如何解析呢?
      

  3.   

    动态分配一个Buffer,然后把你要发的数据拷贝进去;
    char *buf = new char[xxx];
    char *phead = buf;
    int filenameLength...
    char *filename...
    int contentLength...
    char *content...
    memcpy(buf, (char*)filenameLength, 4);
    buf += 4;
    memcpy(buf, filename, filenameLength);
    buf += filenameLength;
    memcpy(buf, (char*)contentLength, 4);
    buf += 4;
    memcpy(buf, (char*)content, contentLength);
    buf += contentLength;
    send(s,(char*)phead, buf - phead);
      

  4.   

    JVM是big-endian的,你的PC应该是little-endian的,网络字节序也是big-endian的,所以你发送的时候需要用htonl转换下字节序。
      

  5.   

    建议用字符型的通讯协议(如json或者xml),否则会后患无穷的
      

  6.   

      结构体包含指针,send会将指针本身的值发送过去,要想将指向的内容发送过去,必须将指针的内容拷贝到字符串中,在把字符串发送过去,这个问题我弄了好久才解决
      

  7.   


    不是字节序的问题吧,字节序是对基本数据类型,他都格式化成char* 了也就没有字节序的概念了
      

  8.   

    不是字节序的问题吧,字节序是对基本数据类型,他都格式化成char* 了也就没有字节序的概念了
    结构的前4字节还是int
      

  9.   

    http://blog.csdn.net/caomiao2006/article/details/5395817
    可以参考一下的
      

  10.   

    我也觉得应该像6楼一样直接new出一块内存在,往里面写数据
    但是要将表示长度的4字节转换为网络字节序后再往里面写