用Socket传输时一次只能传一定的数据,我想将传输的数据放到一个结构体当中,然后分
批传输,每次1024个字节
Send:
         CSocket sockRecv;
         DATA Data;
DWORD dw;
DWORD dwRead=0;
while (dwRead<sizeof(INFO)) 
{
if(dwRead<sizeof(DATA)-1024)
dw=1024;
else
dw=sizeof(DATA)-dwRead;
sockRecv.Send(&Data+dwRead,dw);
dwRead+=dw;
}
sockRecv.Send(&Data+dwRead,ShareMemory-dwRead);
Receive: CSocket sockClient;
         DATA Data;
         DWORD dw;
DWORD dwRead=0;
         while (dwRead<sizeof(DATA)-1024) 
{
                  if(dwRead<sizeof(DATA)-1024)
dw=1024;
else
dw=sizeof(DATA)-dwRead;
sockClient.Receive(&Data+dwRead,dw);
dwRead+=dw;
}
可是这样每次只能接收前面一段数据,后面的都接收不到,很可能结构体不能够这样读地址吧?请高手指教是什么原因,万分感谢!

解决方案 »

  1.   

    sizeof(INFO) = ?
    sizeof(DATA) = ?最基本的问题,你的程序中如果sizeof(DATA) = 1024, 什么都读不到。程序基本都有问题。
      

  2.   

    另外,分块传输数据,为了提高性能,可以在发包之前,发送此包的长度。zxyjyzxyjy(星星)的方法也可以,但是对大规模操作不合适。
      

  3.   

    (char *)((char *)&Data+dwRead)
      

  4.   

    if(dwRead<sizeof(DATA)-1024)
    dw=1024;
    else
    dw=sizeof(DATA)-dwRead;
    sockClient.Receive(&Data+dwRead,dw);
    dwRead+=dw;///////////////////////////////////////////////////////////// dw=sizeof(DATA)-dwRead;
    dwRead=sockClient.Receive(&Data+dwRead,dw);