我的接收函数是如下实现的:
GuoDianHeaderStru m_guoDianHeaderStru; //GuoDianHeaderStru是一个结构体
char tempbuf[1024];
ZeroMemory(tempbuf,1024);
memcpy(&m_guoDianHeaderStru,&tempbuf,1024);
m_ClientSocket->Receive(tempbuf,1024);
为什么我始终只能收到前10个字节的数据,后面的都是错误的信息????
GuoDianHeaderStru m_guoDianHeaderStru; //GuoDianHeaderStru是一个结构体
char tempbuf[1024];
ZeroMemory(tempbuf,1024);
memcpy(&m_guoDianHeaderStru,&tempbuf,1024);
m_ClientSocket->Receive(tempbuf,1024);
为什么我始终只能收到前10个字节的数据,后面的都是错误的信息????
GuoDianHeaderStru m_guoDianHeaderStru;
char tempbuf[1024];
ZeroMemory(tempbuf,1024);
int len;
memcpy(&m_guoDianHeaderStru,&tempbuf,1024);
while(1){
len=m_ClientSocket->Receive(tempbuf,1024);
i(len>=m_guoDianHeaderStru.cStartChar1+8+m_guoDianHeaderStru.unionLen1.uUserDataLen)
break;
}
这样实现对吗?怎么 还是无法得到正确结果,所有数据显示为0
循环的buf要相加才行
如果结构体固定且不大(小于4k最好),直接在客户端服务器程序都包含GuoDianHeaderStru.h
发送方用 send((char*)&m_guoDianHeaderStru,sizeof(GuoDianHeaderStru));
接收方用 Receive((char*)&m_guoDianHeaderStru,sizeof(GuoDianHeaderStru));
直接传结构体就可以了,不然的话,你就算接收到一个BUF里面,还是牵涉到要分割字节流的问题。直接发送结构体比较清晰而且方便
char tempbuf[1024];
ZeroMemory(tempbuf,1024);
int readlen,totallen;
memcpy(&m_guoDianHeaderStru,&tempbuf,1024);
readlen=totallen=0;
while(1){
len=m_ClientSocket->Receive(tempbuf,1024);
tatallen+=len;
memcpy((&m_guoDianHeaderStru+totallen,&tempbuf,len);
i(len>=m_guoDianHeaderStru.cStartChar1+8+m_guoDianHeaderStru.unionLen1.uUserDataLen)
break;
}
是接收http数据吗? 用 ActiveX控件吧: http://www.languangav.com/soft/product_down.htm