不过现在问题是这样的。在中,我发送的结构是这样的:struct send
{
     unsigned long len ; //包长
     char *data ;        //数据
}我发过去,总是有包长,而没有数据,为什么??

解决方案 »

  1.   

    不过现在问题是这样的。在socket中,我发送的结构是这样的:struct send
    {
         unsigned long len ; //包长
         char *data ;        //数据
    }我发过去,总是有包长,而没有数据,为什么??
      

  2.   

    你是不是用send(s, bufsend, sizeof(send), 0)发的啊
      

  3.   

    for(int i = 0; *p != '\0'; i++);
    then the value of i is the length of the string include the null charater.
      

  4.   

    size_t strlen( const char *string );
    size_t _mbstrlen( const char *string );
      

  5.   

    对,你发送的只是指针。没有内容的。而且该指针对别人是没有任何意义的。
    应该这样定义结构才可以:
    struct send
    {
         unsigned long len ; //包长
         char     szData[MAX_LENGTH];        //数据
    }
      

  6.   

    int nLen=sizeof(long)+strlen(send.data);
    char * pBuf=new char[nLen];
    *(unsigned long)pBuf=send.len;
    memcpy(pBuf+sizeof(long),send.data,strlen(send.data);Send(pBuf,nLen);delete [] pBuf;
      

  7.   

    这样的结构应该将p单独发送,
    如果用
    char szData[MAX_LENGTH]这样会台浪费空间,
    后者你可以将它定义成一个类,自己处理发送问题。
      

  8.   

    jiaxl(jiaxl) 的意思是先拷到缓冲区里,然后在发了。这样估计可以。 
      

  9.   

    我是这样做的,发送的数据结构如下:struct snd 
    {
       long len;
       char *data ;
    }然后我用 CAsyncSocket 发送
    sock.Send(&snd,len )接收那就是 Receive(&snd,len);结果就是收不到 data 里的数据。
      

  10.   

    发送数据最好不用结构形式,定义一个大数组,打包之后发过去万事OK!!你上面的问题应该重新声明一个变量,snd是结构名,而不是变量名,再试一下!!
      

  11.   

    这个问题我知道,
    结构中不能用指针,用char tText[1024]
      

  12.   

    sizeof(p) or sizeof(",,,")
    would get the len.
    please use receive(,,,)or recv(,,,) ok .just do it.
      

  13.   

    huqiming(Super) 
    结构中可以用指针,但需要先分配再用,而且结构的长度不固定了。 
    结构的长度总是固定的,要不然编译器怎么分配内存?指针变量总是4bytes.
      

  14.   

    在网络上发送数据,结构中不能有指针,用new分配了内存也没用。因为你根本就没有把分配的内存中的内容发出去还是老老实实的把整个char数组发出去吧,别信那些用new的人。
      

  15.   

    To: leizhengdeng(昔时阿尔丁的森林地带) 
    typedef struct tagBITMAPINFO {
        BITMAPINFOHEADER    bmiHeader;
        RGBQUAD             bmiColors[1];
    } BITMAPINFO;你说BITMAPINFO长度多少????
    bmiColors能不能做指针????
      

  16.   

    To: leizhengdeng(昔时阿尔丁的森林地带) 
    你搞错了。
    我写的结构是微软定义的位图信息头结构,怎么会写错呢???
    你可以先看看相关msdn再说
    sizeof(BITMAPINFO)是不能用的,你学的是书本上的数据结构
      

  17.   

    可以呀?先NEW一块内存就可以了
      

  18.   

    这个问题我碰到过,你可以参考这个帖子:
    http://www.csdn.net/expert/topic/579/579161.xml?temp=.367779你的结构里是一个指针,指针指向的内存可能在别的地方, 不一定就跟在结构指针后面。看你前面的程序,好像仅仅是将结构里包含的数据发送,应该可以这样写:    send(snd.data, snd.len);如果要将整个结构发送,你需要把结构手动整合成一块内存。